Spark Streaming原始碼簡介

2021-07-22 05:37:07 字數 1688 閱讀 7543

spark streaming是構建在spark core之上,提供的可擴充套件、高吞吐、容錯的實時流處理模組,它能接受來自kafka、flume、tcp各種渠道的資料,進行使用者定義的各種map、reduce計算,最終將資料繼承到檔案系統、hdfs、hbase這樣的儲存平台或者將引數的資料供後端系統消費;今天我們著重介紹下streaming模組中的類依賴關係以及自己動手寫乙個dstream。

類圖

spark streaming的所有類均繼承自dstream,dsteam的compute方法定義了建立rdd的掛載點,子類需要實現該方法,提供建立rdd的方式;同時其也提供了一套stream的checkpoint邏輯,使用者也可以根據自己的業務邏輯定義自己的dstreamcheckpointdata,其包括了更新、清除、恢復等checkpoin操作;

動手寫dstream

我們提供乙個基於檔案的輸入流,每個週期從檔案中讀取固定的幾行生成乙個rdd,這個rdd只包含乙個partition,測試方法中為對生成的rdd進行列印操作

檔案流的實現

class

fileinputdstream

(@transient ssc: streamingcontext, file: string)

extends

inputdstream[string](ssc)

with

logging

override

def stop(): unit = {}

override

def compute(validtime: time): option[filelinerdd]=

some(new filelinerdd(ssc.sparkcontext, arrbuffer.toarray))

}}

rdd的實現

class

filelinerdd

(sc: sparkcontext, linelist: array[string])

extends

rdd[string](sc, nil)

with

logging

override

protected

def getpartitions: array[partition] =

}class

filelinerddpartition

( val filename: string,

val index: int,

val lines: int

)extends

partition

測試**

object filestreamingtest 

}

Spark Streaming入門詳解

背景 使用spark主要是使用spark streaming,spark streaming的魔力之所在於 1.流式處理,如今是乙個流處理時代,一切與流不相關的都是無效的資料。3.spark streaming本身是乙個程式,spark streaming在處理資料的時候會不斷感知資料。所以對構建複...

Spark Streaming 程式監控

官網中指出,spark中專門為sparkstreaming程式的監控設定了額外的途徑,當使用streamingcontext時,在web ui中會出現乙個 streaming 的選項卡,在此選項卡內,統計的內容展示如下 這其中包括接受的記錄數量,每乙個batch內處理的記錄數,處理時間,以及總共消耗...

spark streaming讀取kafka示例

spark streaming讀取kafka示例,其中 spark streaming優雅的關閉策略優化部分參考 如何管理spark streaming消費kafka的偏移量部分參考 spark向kafka中寫入資料部分參考 object demo 建立streamingcontext return...