1. 程式人生 > >調研 SparkStreaming API使用

調研 SparkStreaming API使用

本次調研案例

1.使用SparkStreaming去週期性監測指定本地檔案目錄下是否有檔案寫入或建立,有則讀入SparkRDD進行過濾,分詞,計數並將統計結果寫入本地

2,使用SparkStreaming去週期性監測hdfs系統上指定目錄下是否有檔案新上傳,有則讀入SparkRDD進行過濾,分詞,計數並將統計結果寫入hdfs系統

 

調研結果

1,2兩個測試案例均測試成功

 

問題分析

SparkStreaming本身提供了監測檔案目錄狀態功能,能監測指定目錄下是否有新資料生成並進行處理,但在監測程式執行之前該目錄生成的資料,監測程式是無法獲取到的

SparkStreaming是按我們設定好的時間片段去批量處理資料的(所謂的微批處理),達不到按記錄或檔案一條一條的去處理,若想達到該效果需要與kafka,訊息佇列等高階資料來源配合使用

SparkStreaming是按時間片段將監測目錄下新生成的檔案讀入記憶體並生成一個SparkRDD物件進行分析處理

 

本期專案中詞庫分析的資料放在hdfs系統上的每個使用者獨立的zip包下txt檔案,若使用原生的SparkStreaming去處理會出現一些問題,

原生SparkStreaming只能按照指定時間片段去讀取監測到新上傳檔案並且會將這些檔案一起讀到一個SparkRDD物件中,然而分析處理完的結果不是我們想要的

我們需要將每個使用者的資料都視為一個分析任務並將處理的結果分別存入hdfs系統並且帶上使用者標識

若在上傳使用者資料到hdfs系統時設定每個使用者資料上傳間隔為X(X>10)秒,並且詞庫分析程式這邊設定SparkStreaming監測週期也為X秒,能實現SparkStreaming按一個檔案一個檔案的去處理(但並非最佳實現)

 

綜上所述,本期專案先還是使用SparkCore的API進行處理分析,需要解決的問題(自己實現hdfs系統上的檔案監控,自定義詞庫與輸入法詞庫的載入合併等等,需要後續討論)