spark streaming原始碼分析4 DStream相關API
一、InputDStream建立的操作(StreamingContext.scala)
1、給定Receiver作為引數,建立ReceiverInputDStream,T為receiver接收到的資料型別
2、根據引數生成akka actorstream接收資料
socketStream:converter是從socket輸入流轉換成元素T的迭代器的方法socketTextStream:storageLevel預設是MEMORY_AND_DISK_SER_2,converter是從inputstream中按行讀取轉換成迭代器的固定方法 4、fileStream:filter:檔案過濾器,newFileOnly:只讀取新的檔案。還有其他一些使用預設引數的方法。 一個以固定格式讀取檔案作為輸入的介面 與receiverInputDStream不同,它是以檔案作為輸入,所以不需要receiver去讀取。而是直接根據path生成hadoopRDD,再將所有的RDD Union起來。也就是說,在一個batchDuration時間間隔內,就將這個間隔內新的file組合成一個RDD。
5、將多個DStream 聯合,返回UnionDStream。compute方法就是將多個DStream中的Rdd union6、transform:將dstreams中得到的所有rdds轉換成一個RDD 二、DStream操作(DStream.scala)
與RDD不同的是,DStream是以一個outputStream作為一個job。
那outputStream是如何產生的呢?在呼叫foreachRDD方法時通過註冊將一個DStream在DStreamGraph中標記為outputStream。
那有哪些API會註冊outputStream呢?
foreachRDD/print
saveAsNewAPIHadoopFiles/saveAsTextFiles
1、map/flatMap/filter/mapPartitions
與RDD類似,分別生成MappedDstream/FlatMappedDStream/FilteredDStream等,真正運算時根據receiverInputDStream的compute方法產生BlockRDD,再在這個RDD上賦予map的方法引數執行操作。
2、重新分割槽
方法最終是將BlockRDD進行重新分割槽3、reduce:這個方法將DStream的每個RDD都執行reduceFunc方法,並最終每個RDD只有一個分割槽,返回的還是一個DStream[T]
區別:RDD.scala的reduce方法是提交runJob的,返回一個確切的值。4、count:這個方法是將DStream中的每個RDD進行計數,返回一個包含技術的DStream 5、countByValue:類似count方法,只是該方法是按value值計數的 6、foreachRDD:foreachFunc是在一個RDD進行自定義的任何操作 7、transform:在最終生成的RDD上執行transformFunc方法定義的轉換操作
8、transformWith:將自身DStream生成的RDD與other生成的RDD一起,執行transformWith方法。9、union聯合 10、saveAsObjectFiles/saveAsTextFiles
儲存為檔案
三、K/V型別RDD轉換操作
1、groupByKey
2、reduceByKey
3、combineByKey
4、mapValues/flatMapValues與RDD的操作類似,不解釋
5、join
內部呼叫transformWith,transformWith的引數就是將兩個引數RDD作join操作。6、saveAsNewAPIHadoopFiles
儲存到檔案
轉載: http://blog.csdn.net/yueqian_zhu/article/details/49121489
相關文章
- Spark Streaming學習——DStreamSpark
- Spark 原始碼分析系列Spark原始碼
- Spring中AOP相關的API及原始碼解析SpringAPI原始碼
- Spark RPC框架原始碼分析(三)Spark心跳機制分析SparkRPC框架原始碼
- ArrayList相關方法介紹及原始碼分析原始碼
- Flutter Android 端 FlutterView 相關流程原始碼分析FlutterAndroidView原始碼
- Spark學習進度11-Spark Streaming&Structured StreamingSparkStruct
- Spark Streaming VS FlinkSpark
- Spark Streaming入門Spark
- spark學習筆記-- Spark StreamingSpark筆記
- Spark 系列(十四)—— Spark Streaming 基本操作Spark
- Spark 系列(十五)—— Spark Streaming 整合 FlumeSpark
- Flutter Android 端 FlutterEngine Java 相關流程原始碼分析FlutterAndroidJava原始碼
- spark 原始碼分析之十三 -- SerializerManager剖析Spark原始碼
- Apache 流框架 Flink,Spark Streaming,Storm對比分析(1)Apache框架SparkORM
- Apache 流框架 Flink,Spark Streaming,Storm對比分析(2)Apache框架SparkORM
- Apache 流框架 Flink,Spark Streaming,Storm對比分析(一)Apache框架SparkORM
- Apache 流框架 Flink,Spark Streaming,Storm對比分析(二)Apache框架SparkORM
- Spark學習筆記(三)-Spark StreamingSpark筆記
- spark-streaming之 socketTextStreamSpark
- Spark Streaming 流式處理Spark
- Spark Streaming :基本工作原理Spark
- Spark Structured Streaming 解析 JSONSparkStructJSON
- Spark Streaming Failed to read checSparkAI
- spark 原始碼分析之十八 -- Spark儲存體系剖析Spark原始碼
- spark 原始碼分析之十五 -- Spark記憶體管理剖析Spark原始碼記憶體
- 【hadoop/Spark】相關命令HadoopSpark
- 陪玩原始碼,與時間、日期相關的程式碼分析原始碼
- Spark 以及 spark streaming 核心原理及實踐Spark
- Spark Streaming + Spark SQL 實現配置化ETSparkSQL
- Spark報錯(二):關於Spark-Streaming官方示例wordcount執行異常Spark
- Spark RPC框架原始碼分析(一)簡述SparkRPC框架原始碼
- spark 原始碼分析之十九 -- Stage的提交Spark原始碼
- spark 原始碼分析之十六 -- Spark記憶體儲存剖析Spark原始碼記憶體
- Netty服務端啟動過程相關原始碼分析Netty服務端原始碼
- Fabric 1.0原始碼分析(42)scc(系統鏈碼) #cscc(通道相關)原始碼
- Spark Streaming的PIDRateEstimator與backpressureSpark
- Cris 的 Spark Streaming 筆記Spark筆記
- Spark Streaming中的Window操作Spark