Scala和Java二種方式實戰Spark Streaming開發


一、Java方式開發

1、開發前准備

假定您以搭建好了Spark集群。

2、開發環境采用eclipse maven工程,需要添加Spark Streaming依賴。

這里寫圖片描述

3、Spark streaming 基於Spark Core進行計算,需要注意事項:

設置本地master,如果指定local的話,必須配置至少二條線程,也可通過sparkconf來設置,因為Spark Streaming應用程序在運行的時候,至少有一條線程用於不斷的循環接收數據,並且至少有一條線程用於處理接收的數據(否則的話無法有線程用於處理數據),隨着時間的推移,內存和磁盤都會不堪重負)。

溫馨提示:

對於集群而言,每隔exccutor一般肯定不只一個Thread,那對於處理Spark Streaming應用程序而言,每個executor一般分配多少core比較合適?根據我們過去的經驗,5個左右的core是最佳的(段子:分配為奇數個core的表現最佳,例如:分配3個、5個、7個core等)
接下來,讓我們開始動手寫寫Java代碼吧!

第一步:

這里寫圖片描述

第二步:

這里寫圖片描述

我們采用基於配置文件的方式創建SparkStreamingContext對象
這里寫圖片描述
這里寫圖片描述

第三步,創建Spark Streaming輸入數據來源:

我們將數據來源配置為本地端口9999(注意端口要求沒有被占用):
這里寫圖片描述

第四步:我們就像對RDD編程一樣,基於DStream進行編程,原因是DStream是RDD產生的模板,在Spark Streaming發生計算前,其實質是把每個Batch的DStream的操作翻譯成為了RDD操作。

1、flatMap操作:

這里寫圖片描述

2、 mapToPair操作:

這里寫圖片描述

3、reduceByKey操作:

這里寫圖片描述

4、print等操作:

這里寫圖片描述

溫馨提示:

除了print()方法將處理后的數據輸出之外,還有其他的方法也非常重要,在開發中需要重點掌握,比如SaveAsTextFile,SaveAsHadoopFile等,最為重要的是foreachRDD方法,這個方法可以將數據寫入Redis,DB,DashBoard等,甚至可以隨意的定義數據放在哪里,功能非常強大。

二、Scala方式開發

第一步,接收數據源:

這里寫圖片描述

第二步,flatMap操作:

這里寫圖片描述

第三步,map操作:

這里寫圖片描述

第四步,reduce操作:

這里寫圖片描述

第五步,print()等操作:

這里寫圖片描述

第六步:awaitTermination操作

這里寫圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM