[Q1]
Stream Analyticsの出力設定でBLOBを選択すると、必須パラメータに”最小行数”と”最大時間”があります。これらの項目は何を意味しますか?
[A1]
下記ドキュメントの通り、Stream Analytics から出力する際の書き込みの単位を調整するパラメータと考えてください。
https://docs.microsoft.com/ja-jp/azure/stream-analytics/stream-analytics-define-outputs
プロパティ名 説明
最小行数 (Parquet のみ) バッチあたりの最小行数。 Parquet では、バッチごとに新しいファイルが作成されます。 現在の既定値は 2,000 行であり、最大許容値は 10,000 行です。
最大時間 (Parquet のみ) バッチあたりの最大待機時間。 この時間が経過すると、最小行数の要件が満たされていなくても、バッチは出力に書き込まれます。 現在の既定値は 1 分であり、最大許容値は 2 時間です。 BLOB 出力にパス パターンの頻度がある場合は、待機時間をパーティションの時間の範囲より長くすることはできません。
[Q2]
なぜBLOBで必須なのでしょうか?
[A2]
Parquet の特性によるものであり、パフォーマンスの低下を避けるためです。
Parquet を Output にし、リアルタイムにデータを write した場合、ほんの数行のアウトプット毎にファイルを出力することが予想されます。
2000行の output を 2000 ファイルで実現する場合、createfile, write, close のような操作を 2000 回実行していくことになります。
一方で上記のデフォルトパラメータであれば 2000 行を最小として書き出すため、小さなファイルで埋められること、またそれによるパフォーマンスを低下させる恐れがあります。
その為、上記の様なパラメータを必須にし、ある程度の単位で出力させる事でパフォーマンスの低下、小さなファイルの増加を回避しています。
[Q3]
BLOBを使用する場合の設定例は?
[A3]
理論上、最大時間を小さくしすぎる場合、頻繁にそのタイミングでファイルを create, close する事が予想されますので好ましくないように思われます。
また、それらのファイルを Spark などで読ませる場合、小さいファイルというよりは1つずつのファイルはある程度大きい方が好ましいかと思われます。
その為、まずはデフォルトの設定より開始を頂けますでしょうか。
- 最小行数: 2000
- 最大時間: 60秒