带有Sparking Streaming的订单保证

时间:2017-03-10 04:22:32

标签: apache-spark streaming apache-kafka spark-streaming

我正试图从kafka获得一些我希望在另一个系统中向下游传播的更改事件。但是Change顺序很重要。因此,我想知道在中间进行一些Spark转换的合适方法是什么。我唯一看到的是放松并行性并在一个分区上创建DStream。也许有一种方法可以并行执行操作并将所有内容放回一个分区,然后将其发送到外部系统或返回Kafka,然后使用Kafka Sink。

我确信有些人已经这样做了,如果你可以分享你的经验和方法那将是伟大的。感谢。

1 个答案:

答案 0 :(得分:0)

在分布式环境中,在最多层使用某种形式的兑现/缓冲,从同一台机器生成的消息可能以不同的顺序到达后端。秩序的定义也是主观的。实施订单的全局定义对于整个数据来说将是限制性的(可能不正确)。

所以,Kafka的目的是按照put的顺序保持数据的顺序,但是分区是一个问题!分区定义了每个主题的并行度。

通常,保留kafka的抽象级别,它不应该打扰订单。它应该针对最大吞吐量进行优化,分区将会派上用场!考虑订购支持流媒体的副作用!!!

现在,逻辑确保将数据按顺序放入kafka,这在您的应用程序中更有意义(火花作业)。