文档章节

Spark Streaming与kafka对接

d
 dreamness
发布于 08/15 21:09
字数 290
阅读 4
收藏 0

使用KafkaUtil来实现SparkStreaming的对接。 KafkaUtil共有两个版本:

spark-streaming-kafka-0-8 spark-streaming-kafka-0-10
kafka version 0.8.2.1 or higher 0.10.0 or higher
Offset Commit API ×

其中0.8版本已经被遗弃, 不建议使用。

消费kafka共有三种消费语义:
1.At most once: 至多消费一次
2.At least once: 至少一次
3.Exactly once:精确消费一次

其中, at least once级别推荐使用官方API对kafka offset进行维护, 代码如下:

object SSApp02 {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local[2]").setAppName("hehe")
    val ssc = new StreamingContext(sparkConf, Seconds(3))
    ssc.sparkContext.setLogLevel("ERROR")
    val kafkaParams = Map[String, Object](
      "bootstrap.servers" -> "c1:9092,c2:9092,c3:9092",
      "key.deserializer" -> classOf[StringDeserializer],
      "value.deserializer" -> classOf[StringDeserializer],
      "group.id" -> "use_a_separate_group_id_for_each_stream",
      "auto.offset.reset" -> "earliest",
      "enable.auto.commit" -> (false: java.lang.Boolean)
    )

    val topics = Array("testtopic")
    val stream = KafkaUtils.createDirectStream[String, String](
      ssc,
      PreferConsistent,
      Subscribe[String, String](topics, kafkaParams)
    )

    stream.map(record => ((record.key), (record.value))).print()
    stream.foreachRDD { rdd =>
      val offsetRanges = rdd.asInstanceOf[HasOffsetRanges].offsetRanges
      rdd.foreachPartition { iter =>
        val o: OffsetRange = offsetRanges(TaskContext.get.partitionId)
        println(s"partition=${o.partition}, fromOffset=${o.fromOffset}, untilOffset=${o.untilOffset}")

      }
      stream.asInstanceOf[CanCommitOffsets].commitAsync(offsetRanges)
    }

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

Exactly once级别的实现方法见我的另一篇博客:
kafka + spark streaming 确保不丢失不重复消费的offset管理方法

© 著作权归作者所有

d

dreamness

粉丝 2
博文 48
码字总数 17330
作品 0
沈阳
私信 提问
Spark Streaming流式处理

Spark Streaming介绍 Spark Streaming概述 Spark Streaming makes it easy to build scalable fault-tolerant streaming applications. 它可以非常容易的构建一个可扩展、具有容错机制的流式......

jiFeng丶
2018/07/26
0
0
Spark实战 | Kafka与Spark Streaming的联姻

Kafka与Spark虽然没有很直接的必然关系,但是实际应用中却经常以couple的形式存在。如果你的Kafka的爱好者,流式计算框架Spark、Flink等也不得不去了解;如果你是Spark的爱好者,Kafka又或许...

HBase技术社区
02/28
0
0
整合Kafka到Spark Streaming——代码示例和挑战

作者Michael G. Noll是瑞士的一位工程师和研究员,效力于Verisign,是Verisign实验室的大规模数据分析基础设施(基础Hadoop)的技术主管。本文,Michael详细的演示了如何将Kafka整合到Spark...

stark_summer
2015/03/03
799
0
基于Kafka+SparkStreaming+HBase实时点击流案例

前言 最近在专注Spark开发,记录下自己的工作和学习路程,希望能跟大家互相交流成长 本文章更倾向于实战案例,涉及框架原理及基本应用还请读者自行阅读相关文章,相关在本文章最后参考资料中...

舒运
2018/07/13
509
1
Spark Streaming 框架 - StreamingPro

概述 Spark 是一个可扩展的可编程框架,用于数据集的大规模分布式处理, 称为弹性分布式数据集(Resilient Distributed Datasets,RDD)。 Spark Streaming 是 Spark API 核心的扩展,它支持...

匿名
2018/04/29
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

用VideoView播放视频出现Can't play this video原因

见鬼了,两个工程一个能播放,一个不能播放,代码都一样,最后发现 android:usesCleartextTraffic="true" 增加这句话就可以播放了

Domineering
24分钟前
3
0
Linux JDK 安装与配置

一、下载 JDK 官网链接:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 系统是 CentOS 7 X64的,进入系统选择相应的安装包下载,这里下载压缩包。...

HuaiAnGG
25分钟前
1
0
面试复盘

shared_ptr 和 weak_ptr 的区别. 一个有向图有几个圈, 计数。 A,B 胜的概率分别为 1/2, 1/2; A胜两局赢,B胜3局赢, 最少几局可定胜负, A 胜的概率,B胜的概率. 他们采用的是时序ARMA 图论...

MtrS
27分钟前
3
0
什么样的人要学点python编程?请你对号入座

什么样的人需要学点python编程? 时代越来越不一样了,编程这种专业程序员的工作,已经开始应用于各种其他日常工作中,就以前象征着互联网的电脑,现在早已进入普通人家。 那么什么样的人需要...

这人就爱编程
39分钟前
4
0
哪吒之魔童降世的背景音乐怎么提取 视频中提取音频的方法

随着国漫的不断崛起一大批优质的动漫正向我们袭来,从大鱼海棠到大圣归来再到我们现在的哪吒让我们看到国漫质的飞跃,也让我们对国漫充满信心,前段时间哪吒之魔童降世以国产第二的票房下线到...

cenfeng123
42分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部