Memuat data dalam batch menggunakan Storage Write API
Dokumen ini menjelaskan cara menggunakan BigQuery Storage Write API untuk memuat data dalam bentuk batch ke BigQuery.
Dalam skenario pemuatan dalam bentuk batch, aplikasi menulis data dan commit sebagai satu transaksi atomik. Saat menggunakan Storage Write API untuk memuat data dalam bentuk batch, buat satu atau beberapa aliran data dalam jenis tertunda. Jenis tertunda mendukung transaksi tingkat aliran data. Kumpulan data di-buffer dalam status tertunda hingga Anda melakukan commit untuk aliran data.
Untuk workload batch, pertimbangkan juga untuk menggunakan Storage Write API melalui konektor Apache Spark SQL untuk BigQuery menggunakan Dataproc, bukan menulis kode Storage Write API kustom.
Storage Write API sangat cocok untuk arsitektur pipeline data. Proses utama membuat sejumlah aliran data. Untuk setiap aliran data, thread pekerja atau proses terpisah menulis sebagian data batch. Setiap worker membuat koneksi ke aliran datanya, menulis data, dan menyelesaikan aliran datanya setelah selesai. Setelah semua worker memberi sinyal bahwa penyelesaian proses utama berhasil, proses utama meng-commit data. Jika worker gagal, bagian data yang ditetapkan tidak akan muncul di hasil akhir, dan seluruh worker dapat dicoba lagi dengan aman. Pada pipeline yang lebih canggih, worker memeriksa progres mereka dengan melaporkan offset terakhir yang ditulis ke proses utama. Pendekatan ini dapat menghasilkan pipeline yang tangguh dan tahan terhadap kegagalan.
Memuat data dalam batch menggunakan jenis tertunda
Untuk menggunakan jenis yang tertunda, aplikasi melakukan hal berikut:
- Panggil
CreateWriteStream
untuk membuat satu atau beberapa aliran data dalam jenis tertunda. - Untuk setiap aliran data, panggil
AppendRows
dalam satu loop untuk menulis batch kumpulan data. - Untuk setiap aliran data, panggil
FinalizeWriteStream
. Setelah memanggil metode ini, Anda tidak dapat menulis baris lagi ke aliran data. Jika Anda memanggilAppendRows
setelah memanggilFinalizeWriteStream
, langkah ini akan menampilkanStorageError
denganStorageErrorCode.STREAM_FINALIZED
dalam errorgoogle.rpc.Status
. Untuk informasi selengkapnya tentang model errorgoogle.rpc.Status
, lihat Error. - Panggil
BatchCommitWriteStreams
untuk meng-commit aliran data. Setelah Anda memanggil metode ini, data akan tersedia untuk dibaca. Jika terjadi error saat meng-commit salah satu aliran data, error tersebut akan ditampilkan di kolomstream_errors
dariBatchCommitWriteStreamsResponse
.
Committing adalah operasi atomik, dan Anda dapat meng-commit beberapa aliran data sekaligus. Aliran data hanya dapat di-commit satu kali, jadi jika operasi commit gagal, Anda dapat mencobanya lagi. Data akan tertunda dan tidak terlihat untuk dibaca hingga Anda melakukan commit suatu aliran data.
Setelah aliran data diselesaikan dan sebelum di-commit, data dapat tetap berada dalam buffer hingga 4 jam. Aliran data yang tertunda harus di-commit dalam waktu 24 jam. Ada batas kuota pada ukuran total buffering aliran data yang tertunda.
Kode berikut menunjukkan cara menulis data dalam jenis tertunda:
C#
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API C# BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Go BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Node.js BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Contoh ini menunjukkan data sederhana dengan dua kolom. Untuk contoh yang lebih panjang yang menunjukkan cara mengirim berbagai jenis data, termasuk jenis STRUCT
, lihat contoh append_rows_proto2 di GitHub.
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Contoh kode ini bergantung pada modul protokol yang dikompilasi,
customer_record_pb2.py
. Untuk membuat modul yang dikompilasi, jalankan protoc --python_out=. customer_record.proto
, dengan protoc
sebagai compiler buffering protokol. File customer_record.proto
menentukan format pesan yang digunakan dalam contoh Python.