spark streaming基礎知識1
阿新 • • 發佈:2017-05-20
ati 發送 數據 沒有 手動 rdd drive 入隊 定期
1.怎麽理解spark streaming中的dstream?
它是spark streaming的基礎數據結構,代表著(time,RDD)序列,有兩種生成方式,一種是
基於流數據創建(kafka,socket...),一種是基於已有的dstream進行轉換產生.
在spark streaming作業運行的時候,Dstream會根據它的duration,定期生成RDD.
而且會進一步根據rdd生成作業,排入隊列,調度器觸發執行.
由此可以理解,為什麽說spark streaming是微批處理的.它提前生成好一批一批的作業,
調度執行.並不是真正的實時的流.
2.kafkaUitls.createstream和createDirectStream有什麽不同?
directStream:返回的Rdd的partition的數量與topic/partitions的數量一致,不需要寫代碼來控制並發取數據的邏輯.
directStream返回的key,value就是原始的發送到kafka中的key,value,key就是消息本身的key,value就是消息.
Directstream直接派生自inputStream,而kafkastream派生自receiverinputstream,同上面的理解,
directstream是運行在driver端的,而且支持後壓的特性.
而createstream是運行在worker端的.
directstream沒有更新zookeeper上的offset,需要自己手動更新.
spark streaming基礎知識1