分享

Spark Streaming的exactly once的保证

zstu 发表于 2018-4-18 09:46:53 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 6160
我看官方文档说可以通过事务来保证数据消费的exactly once
dstream.foreachRDD { (rdd, time) =>  rdd.foreachPartition { partitionIterator =>    val partitionId = TaskContext.get.partitionId()    val uniqueId = generateUniqueId(time.milliseconds, partitionId)    // use this uniqueId to transactionally commit the data in partitionIterator  }}
我有个疑惑:当我对某个batch的数据只写入了一个partition数据时,整个应用挂了,下次重启后,对上次没有消费成功的数据进行重新消费,但此时的time时间点变了,那重启前的那个分区id和重启后的分区id就不一样了,那这个分区的数据不就重复写入了吗?

已有(2)人评论

跳转到指定楼层
desehawk 发表于 2018-4-18 15:39:16
kafka至 0.11.x版本已经实现了exactly-once。应该做些配置就可以实现。3
下面是事务图



推荐参考
http://www.aboutyun.com/forum.php?mod=viewthread&tid=24367


回复

使用道具 举报

zstu 发表于 2018-4-18 16:19:21
desehawk 发表于 2018-4-18 15:39
kafka至 0.11.x版本已经实现了exactly-once。应该做些配置就可以实现。3
下面是事务图

kafka的exactly once是针对producer往kafka发送数据的把, 我这边是kafka消费数据的offset和数据的一次性
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条