【问题标题】:Do we need to checkpoint both readStream and writeStream of Kafka in Spark Structured Streaming?我们需要在 Spark Structured Streaming 中同时检查 Kafka 的 readStream 和 writeStream 吗?
【发布时间】:2018-02-10 09:46:46
【问题描述】:

我们需要在 Spark Structured Streaming 中同时检查 Kafka 的 readStream 和 writeStream 吗?我们什么时候需要检查点这两个流或只检查其中一个流?

【问题讨论】:

    标签: apache-spark spark-streaming


    【解决方案1】:

    需要检查点来通过流保存有关已处理数据的信息,并且在失败的情况下,火花可以从上次保存的进度点恢复。处理意味着它从源读取,(转换)并最终写入接收器。

    因此,无需为读写器分别设置检查点,因为恢复后不处理仅读取但未写入接收器的数据是没有意义的。此外,checkpointing location can be set as an option to DataStreamWriter only(从dataset.writeStream() 返回)和开始流之前。

    这是一个带有检查点的简单结构化流的示例:

    session
        .readStream()
        .schema(RecordSchema.fromClass(TestRecord.class))
        .csv("s3://test-bucket/input")
        .as(Encoders.bean(TestRecord.class))
        .writeStream()
        .outputMode(OutputMode.Append())
        .format("csv")
        .option("path", "s3://test-bucket/output")
        .option("checkpointLocation", "s3://test-bucket/checkpoint")
        .queryName("test-query")
        .start();
    

    【讨论】:

    • 是不是意味着,当我们初始化readStream时,不需要设置像startingOffsetsauto.offset.resetenable.auto.commit等Kafka相关的选项?而readStream 将只检索从保存在checkpointLocation 中的偏移量开始的消息?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2019-11-20
    • 2021-05-22
    • 2020-07-25
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多