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
) は、各マイクロバッチで処理されるデータ量の "ソフト マックス" を設定します。 つまり、バッチはほぼこの量のデータを処理し、最小の入力単位がこの制限より大きい場合にストリーミング クエリを先に進めるために、制限を超えて処理する可能性があります。 この設定にはデフォルトはありません。
たとえば、各マイクロバッチを 10 GB のデータに制限するために 10g
などのバイト文字列を指定し、各ファイルが 3 GB の場合、Databricks はマイクロバッチで 12 GB を処理します。
複数の入力レートを一緒に設定する
maxBytesPerTrigger
を maxFilesPerTrigger
と組み合わせて使用すると、マイクロバッチは maxFilesPerTrigger
または maxBytesPerTrigger
の下限に達するまでデータを処理します。
他の構造化ストリーミングソースの入力レートの制限
Apache Kafka などのストリーミングソースには、それぞれ maxOffsetsPerTrigger
などのカスタム入力制限があります。 詳細については、「 ストリーミング データソースの構成」を参照してください。