Dataflow から Bigtable に書き込む

Dataflow から Bigtable にデータを書き込むには、Apache Beam Bigtable I/O コネクタを使用します。

並列処理

並列処理は、Bigtable クラスタ内のノードの数で制御されます。各ノードは 1 つ以上のキー範囲を管理しますが、キー範囲はロード バランシングの一環としてノード間を移動できます。詳細については、Bigtable ドキュメントのパフォーマンスについてをご覧ください。

インスタンスのクラスタ内のノードの数に応じて課金されます。Bigtable の料金をご覧ください。

パフォーマンス

次の表に、Bigtable I/O 書き込みオペレーションのパフォーマンス指標を示します。ワークロードは、Apache Beam SDK 2.48.0 for Java を使用して、1 つの e2-standard2 ワーカーで実行されています。Runner v2 は使用されていません。

1 億件のレコード | 1 KB | 1 列 スループット(バイト) スループット(要素)
書き込み 65 MBps 60,000 要素/秒

これらの指標は、単純なバッチ パイプラインに基づいています。これは I/O コネクタ間でのパフォーマンスの比較を目的としており、必ずしも実際のパイプラインを表すものではありません。Dataflow パイプラインのパフォーマンスは複雑で、VM タイプ、処理されるデータ、外部のソースとシンクのパフォーマンス、ユーザーコードに左右されます。指標は Java SDK の実行に基づくものであり、他の言語 SDK のパフォーマンス特性を表すものではありません。詳細については、Beam I/O のパフォーマンスをご覧ください。

ベスト プラクティス

  • トランザクションの使用は避けてください。トランザクションはべき等であるとは限りません。再試行によってトランザクションが複数回呼び出されると、予期しない値が発生する可能性があります。

  • 1 つの Dataflow ワーカーで多くのキー範囲のデータが処理され、Bigtable への書き込みが非効率的になる可能性があります。GroupByKey を使用して Bigtable キーでデータをグループ化すると、書き込みパフォーマンスが大幅に向上します。

  • Bigtable に大規模なデータセットを書き込む場合は、withFlowControl の呼び出しを検討してください。この設定により、Bigtable へのトラフィックが自動的にレート制限され、Bigtable サーバーがデータを処理するのに十分なリソースを確保できます。

次のステップ