Halaman ini memberikan beberapa tips pemecahan masalah umum untuk langganan BigQuery.
Memeriksa status langganan BigQuery
Untuk memeriksa status langganan, lakukan langkah-langkah berikut:
Di konsol Google Cloud, buka halaman langganan Pub/Sub.
Periksa ikon Status untuk langganan BigQuery Anda.
Jika ikonnya berupa tanda centang hijau, langganan tersebut berfungsi dengan baik.
Jika ikonnya adalah tanda seru merah, langganan tersebut dalam status error.
Klik langganan BigQuery.
Halaman detail langganan akan terbuka.
Periksa Status langganan untuk melihat pesan error.
Bergantung pada pesan error, buka bagian yang relevan di halaman ini untuk memecahkan masalah.
Setelah masalah teratasi, langganan pada akhirnya akan kembali ke status yang baik.
Tidak dapat membuat atau memperbarui langganan
Berikut adalah beberapa masalah umum yang dapat Anda hadapi jika mengalami masalah saat membuat atau memperbarui langganan BigQuery.
Error tabel tidak ditemukan
Jika tabel yang Anda tentukan dalam alur kerja pembuatan atau pembaruan langganan tidak ada, alur kerja akan menampilkan error tabel tidak ditemukan. Di konsol Google Cloud, pesannya mirip dengan berikut ini:
The BigQuery table or dataset specified cannot be found.
Untuk mengatasi masalah ini, buat tabel dan pastikan Anda dapat memeriksa statusnya sebelum menggunakannya dengan langganan BigQuery.
Error ketidakcocokan skema
Jika skema tabel dan topik tidak kompatibel, alur kerja pembuatan atau pembaruan langganan akan menampilkan error ketidakcocokan skema. Di konsol Google Cloud, pesannya mirip dengan berikut ini:
Incompatible schema type for field project_ids: expected INT64, got STRING
Pesan error yang ditentukan adalah untuk ketidakcocokan skema untuk kolom yang disebut project_ids
.
Bergantung pada jenis ketidakcocokan skema yang Anda miliki, Anda mungkin
melihat variasi pesan error yang berbeda.
Untuk mengatasi masalah ini, periksa apakah pemetaan skema kompatibel.
Terjadi error pada akun layanan
Jika Anda belum mengonfigurasi akun layanan Pub/Sub dengan izin yang tepat, maka alur kerja pembuatan atau pembaruan langganan akan menampilkan error. Di konsol Google Cloud, pesannya mirip dengan berikut ini:
Service account service-1234234234@gcp-sa-pubsub.iam.gserviceaccount.com
is missing permissions required to write to the BigQuery table:
bigquery.tables.get, bigquery.tables.updateData.
Untuk mengatasi masalah ini, periksa apakah akun layanan memiliki izin yang benar.
Status langganan menampilkan tanda seru merah
Jika Anda mengedit tabel setelah membuat langganan, tindakan ini dapat memengaruhi cara Pub/Sub menulis pesan ke tabel. Jika perubahan menyebabkan masalah, kolom status langganan akan ditetapkan ke status error.
Di halaman detail langganan, periksa status kolom Subscription state
.
Kolom Subscription state
memberikan error yang lebih spesifik,
yang mungkin salah satu dari berikut:
table not found: Tabel dihapus. Buat tabel dan periksa status tabel. Lihat Mendapatkan informasi tabel.
izin tabel ditolak: Akun layanan Pub/Sub tidak lagi memiliki izin untuk menulis ke tabel. Periksa apakah akun layanan memiliki izin yang benar.
ketidakcocokan skema tabel: Skema tabel tidak lagi kompatibel dengan setelan langganan BigQuery. Periksa apakah pemetaan skema kompatibel.
Saat langganan Pub/Sub dalam status error, pesan tidak ditulis ke tabel BigQuery dan tetap berada dalam backlog langganan. Perhatikan bahwa pesan tidak dikirim ke topik yang dihentikan pengirimannya yang dilampirkan, jika dikonfigurasi. Pesan yang tidak terkonfirmasi disimpan
selama periode yang ditetapkan di message_retention_duration
(7d, secara default).
Backlog menumpuk
Jika Anda melihat pesan yang tertunda di langganan atau pesan yang masuk ke topik pesan tidak terkirim langganan, tinjau kemungkinan penyebabnya berikut.
Pesan error INVALID_ARGUMENT
Error ini terjadi jika pesan yang diberikan dalam format yang dianggap valid oleh Pub/Sub, tetapi skema tabel tujuan BigQuery tidak. Artinya, satu atau beberapa kolom dalam pesan memiliki nilai yang tidak diizinkan oleh skema tabel BigQuery. Tinjau kompatibilitas skema untuk memverifikasi bahwa jenis dan format data sudah benar. Beberapa error yang paling umum meliputi:
String kosong (
""
) bukan JSON yang valid. Saat mengirim data ke kolom tabel BigQuery JSON nullable, berikan objek JSON kosong({})
,null
, atau string JSON kosong("\"\"")
untuk mewakili nilai yang hilang. Mengirim string kosong akan menyebabkan error.Jika nilai kolom pesan melebihi panjang maksimum kolom BigQuery, pesan akan gagal karena batasan ukuran.
Untuk memecahkan masalah error INVALID_ARGUMENT
, tambahkan
topik yang dihentikan pengirimannya ke
langganan minat. Topik dead letter menangkap pesan yang tidak dapat ditulis ke BigQuery, beserta atribut yang disebut CloudPubSubDeadLetterSourceDeliveryErrorMessage
yang menjelaskan alasan kegagalan.
Kegagalan pengiriman ini juga dapat dilihat di Metrics Explorer.
Pilih metrik pubsub.googleapis.com/subscription/push_request_count
dan filter menurut response_code=invalid_argument
.
Pesan error RESOURCE_EXHAUSTED
Jika pesan ditulis ke BigQuery dengan lambat, Anda mungkin perlu meningkatkan kuota push Pub/Sub project atau kuota throughput tulis penyimpanan BigQuery. Untuk memeriksa apakah Anda mengalami batasan kuota,
periksa metrik permintaan push (subscription/push_request_count
)
untuk menemukan error resource_exhausted
.
Cara lain untuk mendiagnosis masalah kuota adalah dengan memeriksa kuota project. Buka
IAM & Admin > Kuota dalam project yang berisi resource Pub/Sub atau instance BigQuery Anda. Telusuri kuota yang relevan, baik
pubsub.googleapis.com/regionalpushsubscriber
maupun
bigquerystorage.googleapis.com/write/append_bytes
. Jika salah satu kuota memerlukan
peningkatan, Anda dapat meminta kuota yang lebih tinggi.
Tabel berpartisi per jam yang menampilkan __UNPARTITIONED__
di kolom ID partisi
Saat tabel tujuan BigQuery dipartisi berdasarkan jam, baris
awalnya akan ditempatkan di partisi khusus berlabel __UNPARTITIONED__
dalam
tampilan INFORMATION_SCHEMA.PARTITIONS
.
Ini adalah perilaku yang diharapkan untuk tabel yang menggunakan partisi waktu penyerapan.
BigQuery menggunakan buffering streaming untuk mengoptimalkan proses penulisan.
Data mungkin berada di partisi __UNPARTITIONED__
hingga volume yang memadai
terkumpul atau setidaknya satu jam telah berlalu. Setelah kondisi ini terpenuhi,
BigQuery akan mempartisi ulang data ke dalam partisi per jam yang sesuai.
Anda dapat memantau data dalam partisi __UNPARTITIONED__
menggunakan tampilan INFORMATION_SCHEMA.PARTITIONS
.
Langkah selanjutnya
- Jika Anda masih mengalami masalah dengan langganan BigQuery, lihat Mendapatkan dukungan.