web-dev-qa-db-ja.com

Spark構造化ストリーミング:複数のシンク

  1. 構造化ストリーミングを使用してKafkaから消費し、処理されたデータセットをs3に書き込みます。

    また、処理されたデータをKafkaに書き込みたいのですが、同じストリーミングクエリからそれを行うことは可能ですか?(sparkバージョン2.1.1)

  2. ログに、ストリーミングクエリの進行状況の出力が表示され、ログからサンプル期間のJSONがあります。誰かが、addBatchgetBatchの違いをより明確に教えてください。

  3. TriggerExecution-フェッチされたデータの処理とシンクへの書き込みの両方にかかる時間ですか?

    "durationMs" : {
        "addBatch" : 2263426,
        "getBatch" : 12,
        "getOffset" : 273,
       "queryPlanning" : 13,
        "triggerExecution" : 2264288,
        "walCommit" : 552
    },
    
10
user2221654
  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とほぼ同じです。

11
zsxwing