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 サーバーがデータを処理するのに十分なリソースを確保できます。
次のステップ
- Bigtable I/O コネクタのドキュメントを確認する。
- Google 提供のテンプレートのリストを確認する。