spark spark streaming + kafka direct方式消费消息

kafka + spark streaming direct方式消费消息

 

前提:

spark 安装成功,spark 1.6.0

zookeeper 安装成功

kafka 安装成功

集群环境见:《0423_SparkStreaming数据源kafka解析和安装配置及测试实战预习》,请在IMF群中查看。

 

步骤:

worker1中启动kafka 生产者:

root@worker1:/usr/local/kafka_2.10-0.9.0.1# bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

 

060446_Lo8a_120395.png

worker2中启动消费者:

root@worker2:/usr/local/kafka_2.10-0.9.0.1# bin/kafka-console-consumer.sh --zookeeper master:2181 --topic test

060446_cGh1_120395.png

生产者生产的消息,消费者可以消费到。说明kafka集群没问题。进入下一步。

 

master中启动spark-shell

./spark-shell --master local[2] --packages org.apache.spark:spark-streaming-kafka_2.10:1.6.0,org.apache.kafka:kafka_2.10:0.8.2.1

笔者用的spark 1.6.0 ,读者根据自己版本调整。

 

shell中的逻辑代码(wordcount:

    import kafka.serializer.StringDecoder
    import org.apache.spark.{SparkContext, SparkConf}
    import org.apache.spark.streaming.kafka.KafkaUtils
    import org.apache.spark.streaming.{Durations, StreamingContext}
    val topics = Set("test")
    val params = Map("metadata.broker.list" -> "master:9092,worker1:9092,worker2:9092",
      "group.id" -> "main.scala.StreamingWordCountSelfKafkaDirectStreamScala")
    val ssc = new StreamingContext(sc, Durations.seconds(5))
    KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, params, topics).
      map(t => t._2).
      flatMap(_.split(" ")).
      map((_, 1)).
      reduceByKey(_ + _).
      print
    ssc.start

 

 

生产者再生产消息:

060446_Znli_120395.png

 

spark streaming的反应:

055729_OipF_120395.png

 

返回worker2查看消费者

055729_i9TF_120395.png

可见,groupId不一样,相互之间没有互斥。

 

上述是使用 createDirectStream 方式链接kafka

 

参考:

http://spark.apache.org/docs/latest/streaming-kafka-integration.html

 

 

转载于:https://my.oschina.net/corleone/blog/665532

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值