spark实时读取kafka

指尖星程 2017-03-02 03:51:35
val con = "10.20.30.91:2181"
val topics = "topic1"
val group = "group1"
val numThreads = 6
val ssc = new StreamingContext(sc,Seconds(2))
val sqc = new SQLContext(sc)
val topicMap = topics.split(",").map((_, numThreads.toInt)).toMap
val lines = KafkaUtils.createStream(ssc, con, group, topicMap).map(_._2)
val showLines = lines.window(Minutes(60))
showLines.foreachRDD( rdd => {
val t = sqc.jsonRDD(rdd)
t.registerTempTable("kafka_test")
})
ssc.start()

这是我写的关于spark streaming读取kafka数据的程序,但是当数据量大的时候,就会堵死,我想实现并发的功能,已达到数据的实时性,该如何去做?谢谢大家了

官网有这个 KafkaUtils.createDirectStream
但是我用的时候会出错Received -1 when reading from channel, socket has likely been closed
这个怎么用
...全文
2944 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
火山1 2017-08-09
  • 打赏
  • 举报
回复
配置一下 spark.streaming.backpressure.enabled 和 spark.streaming.backpressure.initialRate 两个参数
qq_19917081 2017-03-06
  • 打赏
  • 举报
回复
val numInputDStreams = 4 val kafkaDStreams = (1 to numInputDStreams).map { _ =>KafkaUtils.createStream(ssc, zkQuorum, group, topicMap).map(_._2)} kafkaDStreams.map( 你的处理逻辑 ) 多进程读取kafka 提交的时候加上这个,后面的数字根据你集群的处理能力来定,每秒钟每个进程最多从每个partition消费多少数据 --conf spark.streaming.kafka.maxRatePerPartition=10000
LinkSe7en 2017-03-06
  • 打赏
  • 举报
回复
你是不是连了zookeeper?createDirectStream直接流模式是连的broker

1,270

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧