Spark 结构化流:多个接收器

Spark Structured streaming: multiple sinks

  1. 我们使用结构化流从 Kafka 消费并将处理后的数据集写入 s3。

    我们还想将处理后的数据写入 Kafka,是否可以从同一个流式查询中完成? (火花版本 2.1.1)

  2. 在日志中,我看到了流式查询进度输出,并且我从日志中得到了一个持续时间 JSON 的样本,有人可以更清楚地说明 addBatchgetBatch

  3. TriggerExecution - 处理获取的数据和写入接收器是否需要时间?

    "durationMs" : {
        "addBatch" : 2263426,
        "getBatch" : 12,
        "getOffset" : 273,
       "queryPlanning" : 13,
        "triggerExecution" : 2264288,
        "walCommit" : 552
    },
    
  1. 是。

    在 Spark 2.1.1 中,您可以使用 writeStream.foreach 将数据写入 Kafka。这个博客中有一个例子:https://databricks.com/blog/2017/04/04/real-time-end-to-end-integration-with-apache-kafka-in-apache-sparks-structured-streaming.html

    或者你可以使用Spark 2.2.0,它增加了Kafka sink,正式支持写入Kafka。

  2. getBatch 测量从源创建 DataFrame 的时间。这通常很快。 addBatch 测量 运行 接收器中的 DataFrame 的长度。

  3. triggerExecution 测量 运行 触发器执行的时间,通常与 getOffset + getBatch + [=12= 几乎相同].