【问题标题】:Pause Spark Kafka Direct Stream暂停 Spark Kafka Direct Stream
【发布时间】:2016-08-31 09:20:51
【问题描述】:

我有以下代码使用 Kafka 连接器为 Spark 创建直接流。但是我想处理一种情况,我可以决定这个流需要在有条件的基础上暂停一段时间,有没有办法实现这一点? 假设我的 Kafka 正在进行一些维护,所以在上午 10 点到下午 12 点之间停止处理,然后在下午 12 点从最后一个偏移量再次取货,我该怎么做?

final JavaInputDStream<KafkaMessage> msgRecords = KafkaUtils.createDirectStream(
            jssc, String.class, String.class, StringDecoder.class, StringDecoder.class,
            KafkaMessage.class, kafkaParams, topicsPartitions,
            message -> {
                return KafkaMessage.builder()
                        .
                        .build();
            }
    );

【问题讨论】:

    标签: apache-spark streaming apache-kafka


    【解决方案1】:

    有两种方式:

    • 在您希望停止处理的时间停止 spark 上下文(来自单独的时间监控线程),并在需要恢复处理时重新启动它们。这最适合大间隔(以小时为单位)。就 Spark 利用率而言,这是最高效的,因此您不会无用地占用 Spark 集群中的插槽。
    • 检索转换的 spark 批处理时间,并根据批处理时间决定是否继续进行其余的转换。不幸的是,获取 Spark 批处理时间并非易事。如果您更改 DStream API 以将批处理时间作为转换 API 的一部分输入,则可以使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 2017-01-09
      • 2017-04-23
      • 2019-11-25
      • 2018-09-21
      • 2016-05-06
      相关资源
      最近更新 更多