SparkStreaming简介 - 与第一个Spark实时计算程序,使用netcat来写数据 - wordcount
生活随笔
收集整理的這篇文章主要介紹了
SparkStreaming简介 - 与第一个Spark实时计算程序,使用netcat来写数据 - wordcount
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
官方文檔
Spark Streaming 火花流是spark API的擴展,它支持可伸縮、高吞吐量、容錯的實時數據流處理。
數據可以從多種來源(如Kafka、Flume、Kinesis或tcp套接字)中攝取,并且可以使用用高級函數表示的復雜算法進行處理,例如map, reduce, join和window…最后,可以將處理過的數據推送到文件系統、數據庫和活動儀表板。事實上,你可以申請星火機器學習和圖形處理數據流算法。
在內部,它的工作方式如下。火花流接收實時輸入數據流,并將數據分成幾個批次,然后由火花引擎進行處理,生成最終的結果流。
火花流提供了一個名為離散流或DStream表示連續的數據流。DStreams可以從Kafka、Flume和Kinesis等源的輸入數據流中創建,也可以通過對其他DStreams應用高級操作來創建。在內部,dStream表示為RDD
也就是SparkStreaming是用DStream來操作的與Spark Core里RDD操作一樣
下面來是第一個程序wordcount
maven配置pom.xml
<!--SparkStreaming--><dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming_2.11</artifactId><version>2.1.1</version></dependency> package date_10_16_SparkStreaming import org.apache.spark.{SparkConf, streaming} import org.apache.spark.streaming.{Seconds, StreamingContext} object wordCount {def main(args: Array[String]): Unit = {//使用SparkStreaming完成wordcount//配置對象val conf = new SparkConf().setMaster("local[*]").setAppName("wordcount")//實時數據分析的環境對象//StreamingContext需要兩個參數,一個conf,一個是采集周期val streamingContext = new StreamingContext(conf,Seconds(3))//從指定的端口中采集數據val socketLineDstream = streamingContext.socketTextStream("chun1",9999)//將采集的數據進行分解(扁平化)val wordToSumDstream = socketLineDstream.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)wordToSumDstream.print()//這里不能停止采集功能,也就是streamingContext不能結束//可以簡單理解為啟動采集器streamingContext.start()//Driver等待采集器,采集器不挺Driver不停止streamingContext.awaitTermination()} }打開虛擬機安裝netcat,這里用netcat來寫數據
yum install -y nc安裝完成后輸入nc -lk 9999
運行上面程序
在netcat輸入數據,這里設定的每三秒為一個采集周期
看到的結果如下所示
總結
以上是生活随笔為你收集整理的SparkStreaming简介 - 与第一个Spark实时计算程序,使用netcat来写数据 - wordcount的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爱优腾全面涨价后 乐视发布会员不涨价通知
- 下一篇: 德国警方禁止特斯拉进入单位 全车摄像头会