您现在的位置是: 首页 > Spark Streaming整合Kafka-0.10


Spark Streaming整合Kafka-0.10

纯真年代 2018-10-26 14:12:16 0 368人围观

Kafka是Spark Streaming的高级数据源之一直达车

Spark Streaming整合Kafka-0.10官方文档直达车

本博客Kafka教程直达车

该文实例代码我的码云直达车  

概述

Apache Kafka是一种发布 - 订阅消息传递,它是一种分布式,分区,复制的提交日志服务。
Kafka项目在版本0.8和0.10之间引入了一个新的消费者API,因此有两个独立的相应Spark Streaming包可用。请为您的经纪人和所需功能选择正确的包装; 请注意,0.8集成与后来的0.9和0.10代理兼容,但0.10集成与早期的代理不兼容。

注意:从Spark 2.3.0开始,不推荐使用Kafka 0.8支持。直达车

集成指南

Kafka 0.10的Spark Streaming集成在设计上与0.8 Direct Stream方法类似,大家知道,0.8的Direct Stream方法在生产上面推荐使用这个的。

1)添加Maven依赖

<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
<version>${spark.version}</version>
</dependency>

2)代码,直达车

object KafkaStreamingWordCountTest {

def main(args: Array[String]): Unit = {

if (args.length != 3) {
System.err.println("Usage: KafkaStreamingWordCountTest <bootstrapServers> <groupId> <topics>")
System.exit(1)
}

val sparkConf = new SparkConf().setMaster("local[2]").setAppName("KafkaStreamingWordCountTest")
val ssc = new StreamingContext(sparkConf, Seconds(5))
ssc.sparkContext.setLogLevel("ERROR")

val Array(bootstrapServers, groupId, topics) = args

val kafkaParams = Map[String, Object](
"bootstrap.servers" -> bootstrapServers,
"key.deserializer" -> classOf[StringDeserializer],
"value.deserializer" -> classOf[StringDeserializer],
"group.id" -> groupId,
"auto.offset.reset" -> "latest",
"enable.auto.commit" -> (false: java.lang.Boolean)
)

val message = KafkaUtils.createDirectStream[String, String](
ssc,
PreferConsistent,
Subscribe[String, String](topics.split(",").toArray, kafkaParams)
)

message.map(record => record.value)
.flatMap(_.split(" "))
.map((_, 1))
.reduceByKey(_ + _)
.print()

ssc.start()
ssc.awaitTermination()
}
}


运行参数为:192.168.31.30:9092 test kafka_streaming_topic

参数的含义在代码中可以体现

启动zookeeper,kafka,相关学习笔记直达车

启动一个kafka生产者,输入数据,查看结果

kafka-console-producer.sh --broker-list localhost:9092 --topic kafka_streaming_topic



之后

官方文档下也提供了LocationStrategies、ConsumerStrategies、Storing Offsets等一些说明,直达车



全部评论