gpt4 book ai didi

scala - Spark 输出到 kafka 恰好一次

转载 作者:行者123 更新时间:2023-12-04 21:35:27 25 4
gpt4 key购买 nike

我想将 Spark 和 Spark 流输出到 kafka 恰好一次。但正如医生所说
“输出操作(如 foreachRDD)具有至少一次语义,也就是说,如果发生工作故障,转换后的数据可能会多次写入外部实体。”。
为了进行事务更新,spark 建议使用批处理时间(在 foreachRDD 中可用)和 RDD 的分区索引来创建标识符。此标识符唯一标识流应用程序中的 blob 数据。代码如下:

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
}
}

但是如何使用 uniqueId 在 kafka 中进行事务性提交。

谢谢

最佳答案

Kixer 的高级软件工程师 Cody Koeninger 在 Spark 峰会上讨论了使用 Kafka 的一次性解决方案。本质上,该解决方案涉及通过同时提交存储偏移量和数据。

在 2016 年的 Confluent 聚会上,工程师们在向工程师提到了 only once 的话题时,引用了 Cody 关于这个话题的演讲。 Cloudera 在 http://blog.cloudera.com/blog/2015/03/exactly-once-spark-streaming-from-apache-kafka/ 发表了他的演讲.科迪的论文在 http://koeninger.github.io/kafka-exactly-once/#1和他的 github(关于这个主题)在 https://github.com/koeninger/kafka-exactly-once .网上也有他讲课的视频。

Kafka 的更高版本引入了 Kafka Streams 来处理没有 Spark 的恰好一次场景,但该主题仅值得一个脚注,因为问题的框架是与 Spark 一起使用。

关于scala - Spark 输出到 kafka 恰好一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39360401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com