SparkStreaming 中 Kafka 参数 auto.offset.reset 的说明

6 篇文章 0 订阅

作用:如果Kafka中没有初始偏移或者当前偏移在服务器上不再存在时(例如,因为该数据已被删除)的处理方法。

Kafka单独写consumer时

可选参数:

  1. earliest:自动将偏移重置为最早的偏移量
  2. latest:自动将偏移量重置为最新的偏移量(默认)
  3. none:如果consumer group没有发现先前的偏移量,则向consumer抛出异常。
  4. 其他的参数:向consumer抛出异常(无效参数)

参考:
http://kafka.apache.org/documentation/


和SparkStreaming整合时:

注意:和SparkStreaming整合时,上面的可选参数是无效的,只有两个可选参数:

  1. smallest:简单理解为从头开始消费,其实等价于上面的 earliest
  2. largest:简单理解为从最新的开始消费,其实等价于上面的 latest

注:Spark的版本为1.6
不知道为什么要不一样 -_-

Spark Streaming 是一个流式处理框架,用于实时处理数据。Kafka 是一个消息队列系统,常用于大规模数据的异步传输。Spark Streaming 可以通过对接 Kafka 来实现实时数据的处理。 对于 Kafkaoffset 处理,Spark Streaming 提供了两种方式: 1. 通过 Checkpoint 来管理 offsetSpark Streaming 可以将 offset 保存在 Checkpoint ,以便在应用程序失败后可以从最近的 Checkpoint 恢复。Checkpoint 可以保存在 HDFS 或本地文件系统,并且可以定期清理以释放空间。通过这种方式,Spark Streaming 可以保证数据不会被重复处理。 2. 通过 Kafka 自身管理 offsetSpark Streaming 也可以让 Kafka 自身来管理 offset。每个 Kafka 分区都有一个 offsetSpark Streaming 可以在每次处理数据后将 offset 提交到 Kafka 。这种方式的好处是可以通过 Kafkaoffset 管理工具来管理 offset,但是需要注意的是如果应用程序失败,那么就需要手动处理 offset。 对于 Spark Streaming 对接 Kafka 的代码示例: ```scala import org.apache.kafka.common.serialization.StringDeserializer import org.apache.spark.streaming.kafka010.ConsumerStrategies.Subscribe import org.apache.spark.streaming.kafka010.LocationStrategies.PreferConsistent import org.apache.spark.streaming.kafka010._ val kafkaParams = Map[String, Object]( "bootstrap.servers" -> "localhost:9092", "key.deserializer" -> classOf[StringDeserializer], "value.deserializer" -> classOf[StringDeserializer], "group.id" -> "test-consumer-group", "auto.offset.reset" -> "latest", "enable.auto.commit" -> (false: java.lang.Boolean) ) val topics = Array("test-topic") val stream = KafkaUtils.createDirectStream[String, String]( streamingContext, PreferConsistent, Subscribe[String, String](topics, kafkaParams) ) stream.map(record => (record.key, record.value)) .flatMap(tuple => tuple._2.split(" ")) .map(word => (word, 1)) .reduceByKey(_ + _) .print() ``` 这个例子,我们使用 KafkaUtils.createDirectStream 方法来订阅 Kafka 的 test-topic 主题。然后将每个消息的 key 和 value 分别取出来,并将 value 按空格拆分成单词。接着使用 map 操作来将每个单词映射为 (单词, 1) 的键值对,然后使用 reduceByKey 操作来计算每个单词的出现次数,并最终使用 print 操作来将结果打印到控制台上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值