Scala 操作Kafka

Spark支持Kafka

網上這塊資料比較多,不再贅述
1.spark-streaming-kafka-0-8_2.11-2.1.0.jar 
2.kafka 的jar 包
3.jar存放路徑 spark/jars/kafka

生產者

import org.apache.spark.streaming.kafka._
import org.apache.kafka.clients.producer.{KafkaProducer, ProducerConfig, ProducerRecord}
import org.json4s.jackson.Serialization.write

val props = new HashMap[String, Object]()
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092")
// value的解析序列化接口實現類(Deserializer)
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,"org.apache.kafka.common.serialization.StringSerializer")
// key的解析序列化接口實現類(Deserializer)
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,"org.apache.kafka.common.serialization.StringSerializer")
// 實例化一個Kafka生產者
val producer = new KafkaProducer[String, String](props)

// rdd.colect即將rdd中數據轉化爲數組,然後write函數將rdd內容轉化爲json格式
val str = write(rdd.collect)
// 封裝成Kafka消息,topic爲"result"
val message = new ProducerRecord[String, String]("result", null, str)
// 給Kafka發送消息
producer.send(message)

消費者

val zkQuorum = "localhost:2181" //Zookeeper服務器地址
val group = "1" //topic所在的group,可以設置爲自己想要的名稱,比如不用1,而是val group = "test-consumer-group"
val topics = "wordsender" //topics的名稱
val numThreads = 1 //每個topic的分區數
val topicMap = topics.split(",").map((_, numThreads.toInt)).toMap
val lineMap = KafkaUtils.createStream(ssc, zkQuorum, group, topicMap)//接受
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章