kafka集成指南

Apache kafka是一个分布式的发布-订阅消息系统,它可以分布式的、可分区的、可重复提交的方式读写日志数据。下面我们将具体介绍Spark Streaming怎样从kafka中
接收数据。

  • 关联:在你的SBT或者Maven项目定义中,引用下面的组件到流应用程序中。
  1. groupId = org.apache.spark
  2. artifactId = spark-streaming-kafka_2.10
  3. version = 1.1.1
  • 编程:在应用程序代码中,引入FlumeUtils创建输入DStream。
  1. import org.apache.spark.streaming.kafka._
  2. val kafkaStream = KafkaUtils.createStream(
  3. streamingContext, [zookeeperQuorum], [group id of the consumer], [per-topic number of Kafka partitions to consume])

有两点需要注意的地方:

  1. kafka的topic分区(partition)和由Spark Streaming生成的RDD分区不相关。所以在KafkaUtils.createStream()方法中,增加特定topic的分区数只能够增加单个receiver消费这个
    topic的线程数,不能增加Spark处理数据的并发数。

  2. 通过不同的group和topic,可以创建多个输入DStream,从而利用多个receiver并发的接收数据。

  • 部署:将spark-streaming-kafka_2.10和它的依赖(除了spark-core_2.10spark-streaming_2.10)打包到应用程序的jar包中。然后用spark-submit方法启动你的应用程序。