spark streaming是spark core api的一種擴充套件,它可以用於進行大規模、高吞吐量、容錯的實時資料流的處理。它支援從很多種資料來源中讀取資料,比如kafka、flume、twitter、zeromq、kinesis或者是tcp socket。並且能夠使用類似高階函式的複雜演算法來進行資料處理,比如map、reduce、join和window。處理後的資料可以被儲存到檔案系統、資料庫、dashboard等儲存中。
spark streaming內部的基本工作原理如下:接收實時輸入資料流,然後將資料拆分成多個batch,比如每收集1秒的資料封裝為乙個batch,然後將每個batch交給spark的計算引擎進行處理,最後會生產出乙個結果資料流,其中的資料,也是由乙個乙個的batch所組成的。
spark streaming提供了一種叫做dstream的高階抽象,英文全稱為discretized stream,中文翻譯為「離散流」,它代表了乙個持續不斷的資料流。dstream可以通過輸入資料來源來建立,比如kafka、flume和kinesis;也可以通過對其他dstream應用高階函式來建立,比如map、reduce、join、window。
dstream的內部,其實一系列持續不斷產生的rdd。rdd是spark core的核心抽象,即不可變的,分布式的資料集。dstream中的每個rdd都包含了乙個時間段內的資料。
對dstream應用的運算元,比如map,其實在底層會被翻譯為對dstream中每個rdd的操作。比如對乙個dstream執行乙個map操作,會產生乙個新的dstream。但是,在底層其原理為,對輸入dstream中每個時間段的rdd,都應用一遍map操作,然後生成的新的rdd,即作為新的dstream中的那個時間段的乙個rdd。底層的rdd的transformation操作,其實還是由spark core的計算引擎來實現的。spark streaming對spark core進行了一層封裝,隱藏了細節,然後對開發人員提供了方便易用的高層次的api。
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...