gpt4 book ai didi

apache-spark - 来自 Kafka 源的 Spark Streaming 返回检查点或倒带

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

当作为消费者从 Kafka 源流式传输 Spark DStreams 时,可以检查 Spark 上下文,因此当应用程序崩溃(或受 kill -9 影响)时,应用程序可以从上下文检查点恢复。但是,如果应用程序“意外地以错误的逻辑部署”,则可能希望倒带到最后一个主题+分区+偏移量,以重播来自某个 Kafka 主题的分区偏移量位置的事件,这些事件在“错误逻辑”之前工作正常。当检查点生效时,流媒体应用程序如何返回到最后一个“好点”(主题+分区+偏移量)?

注意:在 I (Heart) Logs 中,Jay Kreps 写到使用并行消费者(组)进程,该进程从发散的 Kafka 偏移位置开始,直到 catch 原始数据,然后杀死原始数据。 (相对于从某些分区/偏移位置开始,这个第二个 Spark 流处理是什么样的?)

侧边栏:这个问题可能与Mid-Stream Changing Configuration with Check-Pointed Spark Stream有关因为可能需要部署类似的机制。

最佳答案

您将无法在运行中倒带流 SparkStreamingContext .记住这些要点很重要(直接来自文档):

  • Once a context has been started, no new streaming computations can be set up or added to it.
  • Once a context has been stopped, it cannot be restarted.
  • Only one StreamingContext can be active in a JVM at the same time.
  • stop() on StreamingContext also stops the SparkContext. To stop only the StreamingContext, set the optional parameter of stop() called stopSparkContext to false.
  • A SparkContext can be re-used to create multiple StreamingContexts, as long as the previous StreamingContext is stopped (without stopping the SparkContext) before the next StreamingContext is created


相反,您将不得不停止当前流,并创建一个新流。您可以使用 createDirectStream 的其中一个版本从一组特定的偏移量开始一个流。这需要一个 fromOffsets带签名的参数 Map[TopicAndPartition, Long] -- 它是由主题和分区映射的起始偏移量。

另一种理论上的可能性是使用 KafkaUtils.createRDD它将偏移范围作为输入。假设你的“坏逻辑”从偏移 X 开始,然后你在偏移 Y 修复它。对于某些用例,你可能只想做 createRDD使用从 X 到 Y 的偏移量并处理这些结果,而不是尝试将其作为流来执行。

关于apache-spark - 来自 Kafka 源的 Spark Streaming 返回检查点或倒带,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36833193/

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