Spark结构化流媒体:多个接收器

use*_*654 10 apache-spark spark-structured-streaming

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

    我们还希望将处理后的数据写入Kafka继续前进,是否可以通过相同的流式查询来完成?(火花版2.1.1)

  2. 在日志中,我看到了流式查询进度输出,并且我从日志中获得了一个示例持续时间JSON,有人可以提供更清晰的区别addBatch和之间的区别getBatch吗?

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

    "durationMs" : {
        "addBatch" : 2263426,
        "getBatch" : 12,
        "getOffset" : 273,
       "queryPlanning" : 13,
        "triggerExecution" : 2264288,
        "walCommit" : 552
    },
    
    Run Code Online (Sandbox Code Playgroud)

zsx*_*ing 11

  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接收器以支持正式写入Kafka.

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

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

  • 如果您有两个接收器,则表示您有两个查询.每个查询都有自己的Kafka使用者,并独立从Kafka获取数据. (3认同)