Apache Beam I/O コネクタのベスト プラクティス

Dataflow でのデータ処理は高度に並列化できます。この並列処理の多くは、Dataflow によって自動的に処理されます。I/O コネクタは、パイプラインとアーキテクチャの他の部分(ファイル ストレージ、データベース、メッセージング システムなど)の間の境界にあります。そのため、並列処理を実現するには I/O コネクタで考慮すべきことがあります。

一般的なベスト プラクティス

Dataflow で I/O コネクタを使用するための一般的なベスト プラクティスを以下に示します。

  • パイプライン内のコネクタについては Javadoc、Pydoc、Go のドキュメントをご覧ください。詳細については、Apache Beam ドキュメントの I/O コネクタをご覧ください。

  • Apache Beam SDK の最新バージョンを使用してください。I/O コネクタは継続的に改善され、機能の追加や既知の問題の修正が行われています。

  • パイプラインを開発するときは、ジョブの並列処理のバランスをとることが重要です。ジョブの並列処理が少なすぎると処理が遅くなり、ソースにデータが蓄積される可能性があります。逆に、並列処理が多すぎると、リクエストが多すぎるためにシンクに負荷がかかります。

  • 要素の順序に依存しないでください。通常、Dataflow はコレクション内の要素の順序を保証しません。

  • 選択した SDK で I/O コネクタが使用できない場合は、クロス言語フレームワークを使用して別の SDK の I/O コネクタを使用することを検討してください。また、コネクタの機能は SDK 間で必ずしも同等ではありません。別の SDK のコネクタに必要な機能が提供されている場合は、それを言語間変換として使用できます。

  • 一般に、カスタム I/O コネクタの作成は簡単ではありません。可能な限り、既存のコネクタを使用してください。カスタム I/O コネクタを実装する必要がある場合は、新しい I/O コネクタの開発をご覧ください。

  • パイプラインが失敗した場合は、I/O コネクタによってログに記録されたエラーを確認します。Dataflow エラーのトラブルシューティングをご覧ください。

  • Dataflow からコネクタへの書き込みを行う場合は、ErrorHandler を使用して、書き込みの失敗や読み取りの形式エラーを処理することを検討してください。このタイプのエラー処理は、Apache Beam バージョン 2.55.0 以降の BigQueryIO、BigtableIO、PubSubIO、KafkaIO、FileIO、TextIO、AvroIO の Java I/O でサポートされています。

個々の I/O コネクタのベスト プラクティス

次のトピックでは、個々の I/O コネクタのベスト プラクティスを示します。

Google がサポートする I/O コネクタ

次の表に、Dataflow でサポートされている Apache Beam I/O コネクタを示します。Apache Beam コミュニティによって開発され、他のランナーによってサポートされているものを含む、Apache Beam I/O コネクタの全リストについては、Apache Beam ドキュメントの I/O コネクタをご覧ください。

次のステップ