Spark-stream基礎---sparkStreaming和Kafka整合wordCount單詞計數
專案
sprak-stream與kafak整合wordCount
在IDEA上接收kafka傳來的資料,並進行單詞統計
linux端開啟kafka
//1.先開啟zookeeper(3臺)
zkServer.sh start
//2.在開啟kafka(3臺)
bin/kafka-server-start.sh config/server.properties &
//3.建立生產者
bin/kafka-console-producer.sh --broker-list hou-01:9092 --topic wc
//4.控制檯輸入任意單詞
IDEA新增依賴
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka-0-8_2.11</artifactId>
<version>${spark.version}</version>
</dependency>
1.0版本單詞計數
package day08
import org.apache.spark.SparkConf
import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}
import org.apache.spark.streaming.kafka.KafkaUtils
import org.apache.spark.streaming.{Milliseconds, StreamingContext}
/*
需求:kafka消費資料到sparkStreaming計算
*/
object KafkaWordCount {
def main(args: Array[String]): Unit = {
//1.建立StreamingContext
val conf: SparkConf = new SparkConf().setAppName("kafkaWordCount").setMaster("local[2]")
val ssc: StreamingContext = new StreamingContext(conf,Milliseconds(2000))
//2.接入kafka資料來源(如何訪問kafka叢集?zookeeper)
val zkQuorm: String = "192.168.64.111,192.168.64.112,192.168.64.113"
//訪問組
val groupID = "g1"
//訪問主題
val topic: Map[String, Int] = Map[String,Int]("wc"->1)
//建立Dstream
val kafkaStream: ReceiverInputDStream[(String, String)] = KafkaUtils
.createStream(ssc,zkQuorm,groupID,topic)
//3.處理資料
val data: DStream[String] = kafkaStream.map(_._2)
//4.啟動streaming程式
val r: DStream[(String, Int)] = data.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)
r.print()
ssc.start()
//5.關閉資源
ssc.awaitTermination()
}
}
結果
2.0版本單詞計數
將歷史記錄儲存下來,顯示出來,主要使用dataFunc
package day08
import org.apache.spark.{HashPartitioner, SparkConf}
import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}
import org.apache.spark.streaming.kafka.KafkaUtils
import org.apache.spark.streaming.{Milliseconds, StreamingContext}
object StatusKafkaWordCount {
//保持歷史狀態 wc 單詞,次數 聚合的key
//第一個型別:單詞,第二個型別:在每一個分割槽中出現的次數累加的結果
//第三個型別:是以前的結果
val updateFunc = (iter:Iterator[(String,Seq[Int],Option[Int])]) => {
//總的次數= 當前出現的次數 + 以前返回的結果
iter.map(t => (t._1, t._2.sum + t._3.getOrElse(0)))
}
def main(args: Array[String]): Unit = {
//1.建立程式入口
val conf: SparkConf = new SparkConf().setAppName("StateKafkaWC").setMaster("local[2]")
val ssc: StreamingContext = new StreamingContext(conf,Milliseconds(2000))
//2.需要累加歷史資料 checkpoints
ssc.checkpoint("hdfs://192.168.64.111:9000/ck")
//3.接入kafka資料來源
val zkQuorm: String = "192.168.64.111,192.168.64.112,192.168.64.113"
//訪問組
val groupID = "g1"
//訪問主題
val topic: Map[String, Int] = Map[String,Int]("wc"->1)
//建立Dstream
val kafkaStream: ReceiverInputDStream[(String, String)] = KafkaUtils
.createStream(ssc,zkQuorm,groupID,topic)
//4.處理資料
val data: DStream[String] = kafkaStream.map(_._2)
//5.加入歷史資料計算
val r: DStream[(String, Int)] = data.flatMap(_.split(" ")).map((_, 1))
//引數1:自定義業務函式 引數2:分割槽器設定 引數3:是否使用
.updateStateByKey(updateFunc, new HashPartitioner(ssc.sparkContext.defaultParallelism), true)
//6.列印
r.print()
//7.啟動程式
ssc.start()
//8.關閉資源
ssc.awaitTermination()
}
}
結果
相關文章
- 資料採集元件:Flume基礎用法和Kafka整合元件Kafka
- sparkStreaming 之 kafka源SparkKafka
- Flume + Kafka + SparkStreaming分析KafkaSpark
- Hadoop MapReduce之wordcount(詞頻統計)Hadoop
- 圖解SparkStreaming與Kafka的整合,這些細節大家要注意!圖解SparkKafka
- Kafka結合SparkStreaming開發KafkaSpark
- Flink從Kafka取數WordCount後TableApi寫入ESKafkaAPI
- 使用map:單詞計數程式
- C++ 統計單詞數C++
- kafka基礎原理Kafka
- Java、Scala、Python ☞ 本地WordCount詞頻統計對比JavaPython
- Kafka基礎入門Kafka
- kafka及redis基礎KafkaRedis
- Kafka基礎認識Kafka
- kafka 基礎介紹Kafka
- kafka基礎介紹Kafka
- Kafka 基礎知識Kafka
- kafka基礎學習Kafka
- 【Spark篇】---SparkStreaming+Kafka的兩種模式receiver模式和Direct模式SparkKafka模式
- 基礎程式設計題(PTA) 7-26 單詞長度 (15分)程式設計
- python 統計文章單詞個數Python
- 統計檔案中單詞個數
- 詞法分析基礎詞法分析
- [.net 物件導向程式設計基礎] (5) 基礎中的基礎——變數和常量物件程式設計變數
- Kafka基礎:表和流的區別 - Edward LoveallKafka
- kafka基礎知識梳理Kafka
- Kafka基礎入門篇Kafka
- Storm系列(六)storm和kafka整合ORMKafka
- SpringBoot整合Kafka和StormSpring BootKafkaORM
- 數值計算基礎
- nlp基礎之詞、子詞或字元字元
- python 統計文章單詞個數-1Python
- python 統計文章單詞個數 -2Python
- 轉:用Perl實現單詞計數器
- 統計一個字串中的單詞的個數,並列印各個單詞字串
- 第六篇:Eclipse上執行第一個Hadoop例項 - WordCount(單詞統計程式)EclipseHadoop
- Kafka原理分析之基礎篇Kafka
- 統計檔案中出現的單詞次數