Databricksでの構造化ストリーミングのバッチ サイズの構成

構造化ストリーミングクエリーの入力レートを制限すると、一貫したバッチ サイズを維持し、大きなバッチによってマイクロバッチ処理の遅延が流出したりカスケードされたりするのを防ぐことができます。

Databricks には、 Delta Lake と Auto Loaderの両方の構造化ストリーミング バッチ サイズを制御するための同じオプションが用意されています。

maxFilesPerTriggerで入力レートを制限する

設定 maxFilesPerTrigger (または Auto Loaderの場合は cloudFiles.maxFilesPerTrigger)は、各マイクロバッチで処理されるファイル数の上限を指定します。 Delta Lake と Auto Loader の両方で、デフォルトは 1000 です。(このオプションは、デフォルトで最大値がない他のファイルソースのApache Sparkにも存在することに注意してください)。

maxBytesPerTrigger で入力レートを制限する

設定 maxBytesPerTrigger (または Auto Loaderの場合は cloudFiles.maxBytesPerTrigger)は、各マイクロバッチで処理されるデータ量の「ソフトマックス」を設定します。 つまり、バッチはほぼこの量のデータを処理し、最小の入力単位がこの制限よりも大きい場合にストリーミングクエリーを前進させるために制限を超えて処理する可能性があります。 この設定にはデフォルトはありません。

たとえば、 10g などのバイト文字列を指定して各マイクロバッチを 10 GB のデータに制限し、それぞれ 3 GB のファイルがある場合、Databricks はマイクロバッチで 12 GB を処理します。

複数の入力レートをまとめて設定する

maxBytesPerTriggermaxFilesPerTriggerと組み合わせて使用すると、マイクロバッチは maxFilesPerTrigger または maxBytesPerTriggerの下限に達するまでデータを処理します。

他の構造化ストリーミングソースの入力レートの制限

Apache Kafka などのストリーミングソースには、それぞれ maxOffsetsPerTriggerなどのカスタム入力制限があります。 詳細については、「 ストリーミングデータソースの構成」を参照してください。