Spark學習(十三):四個應用庫之Spark Streaming

1. 應用庫——Spark Streaming

(1)Spark Streaming的概念:

它是建立在Spark上的實時計算框架,通過它提供豐富的API、基於內存的高速執行引擎,用戶可以結合流式、批處理和交互試查詢應用。

(2)Spark Streaming的特點:

1)Saprk的低延遲執行引擎(100MS+)可以用於實時處理

2)相比於strom(基於Record),RDD數據更容易做容錯。

3)可以與kafka,Flume,ZeroMQ等進行數據源的對接

4)小批量處理的方式使得它可以同時兼容批量和實時數據處理的邏輯和算法。方便了一些需要歷史數據和實時數據聯合分析的特定應用場合。

(3)Spark Streaming的編程:

在Spark Streaming中,則通過操作DStream(表示數據流的RDD序列)提供的接口,這些接口和RDD提供的接口類似。

代碼示例如下:

Spark學習(十三):四個應用庫之Spark Streaming


(4)Spark Streaming基本原理:

它是將流數據分成小的時間片段(幾秒),以類似批處理方式來處理這部分小數據。

具體處理流程:

1)Spark Streaming把實時輸入數據流以時間片Δt (如1秒)為單位切分成塊

2)Spark Streaming會把每塊數據作為一個RDD,並使用RDD操作處理每一小塊數據

3)每個塊都會生成一個Spark Job處理

4)最終結果也返回多塊

處理流程圖如下:

Spark學習(十三):四個應用庫之Spark Streaming


2. Spark Streaming的Java風格的代碼案例

(1)案例介紹:

監聽hdfs的某個文件夾,一旦該文件夾中存在文件之後, Spark Streaming就會讀取該文件,並通過Spark Streaming的相關操作,將該文件中的單詞進行統計,並將統計後的單詞以及該單詞的數量打印出來。

(2)編碼步驟:

1)在hdfs中創建一個目錄,切換到hdfs的bin目錄下利用以下命令:

hadoop fs –mkdir /spark/stream

2)創建工程sparkst,將工程的jdk置為1.8,並且引入如下jar包:

spark-assembly-1.6.2-hadoop2.6.0.jar

此包可以在spark的安裝目錄的lib子目錄下找到,找到後引入到eclipse中。

3)建立包com.gongyunit.sparkst

4) 在該包下創建類TestSparkStreamHDFS,具體代碼如下:

Spark學習(十三):四個應用庫之Spark Streaming


6) 將sparkst工程打成jar包,上傳到spark所在的服務器的某一目錄下,這裡以在spark的安裝目錄的code子目錄下為例。

7)然後執行如下命令,執行該jar包:

spark-submit --master spark:// ip :7077 --executor-memory 500m --class com.gongyunit.sparkst.TestSparkStreamHDFS ./code/sparkst.jar hdfs:// ip :9000/spark/stream

補充:實際操作是要講ip換成你的實際spark的所在ip地址

8) 在linux上創建一個含有英語單詞的文件spfile.txt,單詞之間以空格隔開。

9) 將該文件上傳到hdfs上,切換到hdfs的bin目錄下利用以下命令:

hadoop fs –put 本地文件位置 /spark/stream


分享到:


相關文章: