我们是否需要在Spark Structured Streaming中检查Kafka的readStream和writeStream?

时间:2017-06-16 08:29:26

标签: apache-spark spark-streaming

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

1 个答案:

答案 0 :(得分: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();