Konektor Flink Bigtable
Apache Flink adalah framework pemrosesan streaming yang memungkinkan Anda memanipulasi data secara real time. Jika memiliki tabel Bigtable, Anda dapat menggunakan konektor Flink Bigtable untuk melakukan streaming, membuat serial, dan menulis data dari sumber data yang ditentukan ke Bigtable. Konektor ini memungkinkan Anda melakukan hal berikut, menggunakan Apache Flink Table API atau Datastream API:
- Membuat pipeline
- Menserialisasi nilai dari sumber data Anda ke dalam entri mutasi Bigtable
- Tulis entri tersebut ke tabel Bigtable Anda
Dokumen ini menjelaskan konektor Flink Bigtable dan hal-hal yang perlu Anda ketahui sebelum menggunakannya. Sebelum membaca dokumen ini, Anda harus memahami Apache Flink, model penyimpanan Bigtable, dan penulisan Bigtable.
Untuk menggunakan konektor, Anda harus memiliki tabel Bigtable yang sudah ada sebelumnya untuk berfungsi sebagai tujuan data. Anda harus membuat grup kolom tabel sebelum memulai pipeline; grup kolom tidak dapat dibuat saat menulis. Untuk mengetahui informasi selengkapnya, lihat Membuat dan mengelola tabel.
Konektor tersedia di GitHub. Untuk mengetahui informasi tentang cara menginstal konektor, lihat repositori Flink Bigtable Connector. Untuk contoh kode yang menunjukkan cara menggunakan konektor, lihat direktori flink-examples-gcp-bigtable.
Serializer
Konektor Flink memiliki tiga serializer bawaan yang dapat Anda gunakan untuk mengonversi data menjadi entri mutasi Bigtable:
GenericRecordToRowMutationSerializer
: Untuk objekGenericRecord
AVRORowDataToRowMutationSerializer
: Untuk objekRowData
FlinkFunctionRowMutationSerializer
: Untuk logika serialisasi kustom menggunakan fungsi yang disediakan
Anda juga dapat memilih untuk membuat serializer kustom Anda sendiri yang diwarisi dari
BaseRowMutationSerializer
.
Mode serialisasi
Saat menggunakan konektor Flink, Anda memilih salah satu dari dua mode serialisasi. Mode menentukan cara data sumber Anda diserialisasi untuk merepresentasikan grup kolom Bigtable, lalu ditulis ke tabel Bigtable Anda. Anda harus menggunakan salah satu mode.
Mode grup kolom
Dalam mode grup kolom, semua data ditulis ke satu grup kolom tertentu. Kolom bertingkat tidak didukung.
Mode baris bertingkat
Dalam mode baris bertingkat, setiap kolom tingkat teratas mewakili family kolom. Nilai kolom tingkat teratas (RowKeyField) adalah kolom lain. Nilai kolom tersebut memiliki objek baris untuk setiap kolom dalam grup kolom Bigtable. Dalam mode baris bertingkat, semua kolom selain kolom tingkat teratas harus berupa objek baris. Baris bertingkat ganda tidak didukung.
Pemrosesan tepat satu kali
Di Apache Flink, tepat satu kali berarti bahwa setiap rekaman data dalam aliran diproses tepat satu kali, sehingga mencegah pemrosesan duplikat atau kehilangan data, bahkan jika terjadi kegagalan sistem.
Mutasi mutateRow
Bigtable bersifat idempoten secara default, sehingga permintaan tulis yang memiliki row key, grup kolom, kolom, stempel waktu, dan nilai yang sama tidak akan membuat sel baru, meskipun dicoba lagi. Artinya, saat Anda
menggunakan Bigtable sebagai tujuan data untuk framework Apache Flink, Anda
akan mendapatkan perilaku tepat sekali secara otomatis, selama Anda tidak mengubah
stempel waktu dalam percobaan ulang dan bagian pipeline lainnya juga memenuhi persyaratan
tepat sekali.
Untuk mengetahui informasi selengkapnya tentang semantik tepat satu kali, lihat Ringkasan pemrosesan tepat satu kali end-to-end di Apache Flink.
Langkah berikutnya
- Konektor Bigtable Beam
- Konektor sink Bigtable Kafka Connect
- Integrasi dengan Bigtable
- Referensi Datastream API