DStream的相關操作:
DStream上的操作與RDD的類似,分為以下兩種:
- Transformations(轉換)
- Output Operations(輸出)/Action
1.1Transformations
●常見Transformation---無狀態轉換:每個批次的處理不依賴於之前批次的數據
Transformation |
Meaning |
map(func) |
對DStream中的各個元素進行func函數操作,然后返回一個新的DStream |
flatMap(func) |
與map方法類似,只不過各個輸入項可以被輸出為零個或多個輸出項 |
filter(func) |
過濾出所有函數func返回值為true的DStream元素並返回一個新的DStream |
union(otherStream) |
將源DStream和輸入參數為otherDStream的元素合並,並返回一個新的DStream. |
reduceByKey(func, [numTasks]) |
利用func函數對源DStream中的key進行聚合操作,然后返回新的(K,V)對構成的DStream |
join(otherStream, [numTasks]) |
輸入為(K,V)、(K,W)類型的DStream,返回一個新的(K,(V,W)類型的DStream |
transform(func) |
通過RDD-to-RDD函數作用於DStream中的各個RDD,可以是任意的RDD操作,從而返回一個新的RDD |
●特殊的Transformations---有狀態轉換:當前批次的處理需要使用之前批次的數據或者中間結果。
有狀態轉換包括基於追蹤狀態變化的轉換(updateStateByKey)和滑動窗口的轉換
1.UpdateStateByKey(func)
2.Window Operations開窗函數
1.2. Output/Action
Output Operations可以將DStream的數據輸出到外部的數據庫或文件系統
當某個Output Operations被調用時,spark streaming程序才會開始真正的計算過程(與RDD的Action類似)
Output Operation |
Meaning |
print() |
打印到控制台 |
saveAsTextFiles(prefix, [suffix]) |
保存流的內容為文本文件,文件名為"prefix-TIME_IN_MS[.suffix]". |
saveAsObjectFiles(prefix,[suffix]) |
保存流的內容為SequenceFile,文件名為 "prefix-TIME_IN_MS[.suffix]". |
saveAsHadoopFiles(prefix,[suffix]) |
保存流的內容為hadoop文件,文件名為"prefix-TIME_IN_MS[.suffix]". |
foreachRDD(func) |
對Dstream里面的每個RDD執行func |
1.3. 總結: