Konektor Bigtable Flink
Apache Flink adalah framework pemrosesan streaming yang memungkinkan Anda memanipulasi data secara real time. Jika memiliki tabel Bigtable, Anda dapat menggunakan konektor Bigtable Flink untuk melakukan streaming, serialisasi, 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
- Serasikan nilai dari sumber data Anda ke dalam entri mutasi Bigtable
- Tulis entri tersebut ke tabel Bigtable Anda
Dokumen ini menjelaskan konektor Bigtable Flink dan hal-hal yang perlu Anda ketahui sebelum menggunakannya. Sebelum membaca dokumen ini, Anda harus sudah memahami Apache Flink, model penyimpanan Bigtable, dan penulisan Bigtable.
Untuk menggunakan konektor, Anda harus memiliki tabel Bigtable yang sudah ada untuk berfungsi sebagai sink data. Anda harus membuat grup kolom tabel sebelum memulai pipeline; grup kolom tidak dapat dibuat saat menulis. Untuk informasi selengkapnya, lihat Membuat dan mengelola tabel.
Konektor tersedia di GitHub. Untuk 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 serialisasi kustom Anda sendiri yang mewarisi dari
BaseRowMutationSerializer
.
Mode serialisasi
Saat menggunakan konektor Flink, Anda dapat memilih salah satu dari dua mode serialisasi. Mode ini menentukan cara data sumber diserialisasi untuk mewakili grup kolom Bigtable, lalu menulis tabel Bigtable. Anda harus menggunakan salah satu mode.
Mode grup kolom
Dalam mode grup kolom, semua data ditulis ke satu grup kolom yang ditentukan. Kolom bertingkat tidak didukung.
Mode baris bertingkat
Dalam mode baris bertingkat, setiap kolom level teratas mewakili keluarga kolom. Nilai kolom level 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 level teratas harus berupa objek baris. Baris bertingkat ganda tidak didukung.
Pemrosesan tepat satu kali
Di Apache Flink, tepat satu kali berarti setiap kumpulan 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 kunci baris, grup kolom, kolom, stempel waktu, dan nilai yang sama tidak akan membuat sel baru, meskipun dicoba lagi. Artinya, saat menggunakan Bigtable sebagai sink data untuk framework Apache Flink, Anda akan otomatis mendapatkan perilaku exactly-once, selama Anda tidak mengubah stempel waktu dalam percobaan ulang dan pipeline lainnya juga memenuhi persyaratan exactly-once.
Untuk mengetahui informasi selengkapnya tentang semantik tepat satu kali, lihat Ringkasan pemrosesan tepat satu kali menyeluruh di Apache Flink.