一、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等,甚至可以隨意的定義數據放在哪里,功能非常強大。