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 エラーのトラブルシューティングをご覧ください。

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

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

I/O コネクタ読み取り書き込み
BigQuery BigQuery から読み取る BigQuery に書き込む
Bigtable Bigtable から読み取る Bigtable に書き込む
Cloud Storage Cloud Storage から読み取る Cloud Storage に書き込む

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

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

I/O コネクタ名 Java Python Go
AvroIO サポート対象 サポート対象 サポート対象
BigQueryIO サポート対象 サポート対象 サポート対象
BigTableIO サポート対象 シンクをサポート シンクをサポート
DatastoreIO サポート対象 サポート対象 サポート対象
FhirIO(ヘルスケア) サポート対象 利用不可 サポート対象
FileIO サポート対象 サポート対象 サポート対象
GcsFileSystem サポート対象 サポート対象 サポート対象
JdbcIO サポート対象 言語間変換をサポート 言語間変換をサポート
KafkaIO サポート対象 言語間変換をサポート 言語間変換をサポート
LocalFileSystem サポート対象 サポート対象 サポート対象
ParquetIO サポート対象 サポート対象 サポート対象
PubSubIO サポート対象 サポート対象 サポート対象
SpannerIO サポート対象 言語間変換をサポート サポート対象
TextIO サポート対象 サポート対象 サポート対象
TFRecordIO サポート対象 サポート対象 利用不可

次のステップ