Menulis dari Dataflow ke Bigtable

Untuk menulis data dari Dataflow ke Bigtable, gunakan konektor I/O Bigtable Apache Beam.

Keparalelan

Paralelisme dikontrol oleh jumlah node di cluster Bigtable. Setiap node mengelola satu atau beberapa rentang kunci, walaupun rentang kunci dapat berpindah antar-node sebagai bagian dari load balancing. Untuk informasi selengkapnya, lihat Memahami performa dalam dokumentasi Bigtable.

Anda dikenai biaya untuk jumlah node di cluster instance. Lihat Harga Bigtable.

Performa

Tabel berikut menunjukkan metrik performa untuk operasi tulis I/O Bigtable. Beban kerja dijalankan di satu pekerja e2-standard2, menggunakan Apache Beam SDK 2.48.0 untuk Java. Mereka tidak menggunakan Runner v2.

100 juta data | 1 kB | 1 kolom Throughput (byte) Throughput (elemen)
Menulis 65 MBps 60.000 elemen per detik

Metrik ini didasarkan pada pipeline batch sederhana. Pengujian ini dimaksudkan untuk membandingkan performa antara konektor I/O, dan tidak selalu mewakili pipeline di dunia nyata. Performa pipeline Dataflow bersifat kompleks, dan merupakan fungsi dari jenis VM, data yang sedang diproses, performa sumber dan sink eksternal, serta kode pengguna. Metrik didasarkan pada menjalankan Java SDK, dan tidak mewakili karakteristik performa SDK bahasa lainnya. Untuk mengetahui informasi selengkapnya, lihat Performa Beam IO.

Praktik terbaik

  • Secara umum, hindari penggunaan transaksi. Transaksi tidak dijamin bersifat idempotent, dan Dataflow dapat memanggilnya beberapa kali karena percobaan ulang, yang menyebabkan nilai yang tidak terduga.

  • Satu pekerja Dataflow mungkin memproses data untuk banyak rentang kunci, sehingga menyebabkan penulisan yang tidak efisien ke Bigtable. Menggunakan GroupByKey untuk mengelompokkan data berdasarkan kunci Bigtable dapat meningkatkan performa tulis secara signifikan.

  • Jika Anda menulis set data besar ke Bigtable, pertimbangkan untuk memanggil withFlowControl. Setelan ini secara otomatis membatasi kapasitas traffic ke Bigtable, untuk memastikan server Bigtable memiliki resource yang cukup untuk menayangkan data.

Langkah selanjutnya