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 コネクタのベスト プラクティスを示します。
I/O コネクタ | 読み取り | 書き込み |
---|---|---|
Apache Iceberg | Apache Iceberg から読み取る | Apache Iceberg に書き込む |
BigQuery | BigQuery から読み取る | BigQuery に書き込む |
Bigtable | Bigtable から読み取る | Bigtable に書き込む |
Cloud Storage | Cloud Storage から読み取る | Cloud Storage に書き込む |
Pub/Sub | Pub/Sub から読み取る | Pub/Sub に書き込む |
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 | サポート対象 | サポート対象 | 利用不可 |
次のステップ
- Apache Beam のドキュメントで I/O コネクタを確認する。