構造化ストリーミングを使用してKafkaから消費し、処理されたデータセットをs3に書き込みます。
また、処理されたデータをKafkaに書き込みたいのですが、同じストリーミングクエリからそれを行うことは可能ですか?(sparkバージョン2.1.1)
ログに、ストリーミングクエリの進行状況の出力が表示され、ログからサンプル期間のJSONがあります。誰かが、addBatch
とgetBatch
の違いをより明確に教えてください。
TriggerExecution-フェッチされたデータの処理とシンクへの書き込みの両方にかかる時間ですか?
"durationMs" : {
"addBatch" : 2263426,
"getBatch" : 12,
"getOffset" : 273,
"queryPlanning" : 13,
"triggerExecution" : 2264288,
"walCommit" : 552
},
はい。
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への書き込みをサポートすることができます。
getBatch
は、ソースからDataFrameを作成する時間を測定します。これは通常かなり高速です。 addBatch
は、シンクでDataFrameを実行する時間を測定します。
triggerExecution
は、トリガー実行の実行時間を測定します。通常、getOffset
+ getBatch
+ addBatch
とほぼ同じです。