Memecahkan masalah langganan BigQuery

Halaman ini memberikan beberapa tips pemecahan masalah umum untuk langganan BigQuery.

Memeriksa status langganan BigQuery

Untuk memeriksa status langganan, lakukan langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman langganan Pub/Sub.

    Buka Langganan

  2. Periksa ikon Status untuk langganan BigQuery Anda.

    Jika ikonnya adalah tanda centang hijau, berarti langganan berfungsi dengan baik.

    Jika ikonnya adalah tanda seru merah, berarti langganan dalam status error.

  3. Klik langganan BigQuery.

    Halaman detail langganan akan terbuka.

  4. Periksa Status langganan untuk melihat pesan error.

  5. Bergantung pada pesan error, buka bagian yang relevan di halaman ini untuk memecahkan masalah tersebut.

Setelah masalah teratasi, langganan akan kembali ke status normal.

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 skema tidak cocok

Jika skema tabel dan topik tidak kompatibel, alur kerja pembuatan atau update 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 berwarna merah

Jika Anda mengedit tabel setelah membuat langganan, hal 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:

  • tabel tidak ditemukan: 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 dipertahankan selama periode yang ditetapkan di message_retention_duration(7 hari, secara default).

Tumpukan tugas yang belum selesai semakin banyak

Jika Anda melihat backlog pesan yang menumpuk di langganan atau pesan yang dikirim ke topik yang dihentikan pengirimannya di langganan, tinjau kemungkinan penyebab berikut.

Pesan error INVALID_ARGUMENT

Error ini terjadi saat pesan yang diberikan memiliki format yang dianggap valid oleh Pub/Sub, tetapi tidak oleh skema tabel tujuan BigQuery. 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 kesalahan yang paling umum meliputi:

  • String kosong ("") bukan JSON yang valid. Saat mengirim data ke kolom tabel BigQuery JSON yang dapat bernilai null, berikan objek JSON kosong ({}), null, atau string JSON kosong ("\"\"") untuk merepresentasikan nilai yang tidak ada. Mengirim string kosong akan menghasilkan error.

  • Jika nilai kolom pesan melebihi panjang maksimum kolom BigQuery, pesan akan gagal karena batasan ukuran.

Untuk memecahkan masalah error INVALID_ARGUMENT, tambahkan topik pesan yang tidak terkirim ke langganan yang diinginkan. Topik yang dihentikan pengirimannya mencatat 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 secara lambat, Anda mungkin perlu meningkatkan kuota push Pub/Sub project atau kuota throughput penulisan penyimpanan BigQuery. Untuk memeriksa apakah Anda mengalami batasan kuota, periksa metrik permintaan push (subscription/push_request_count) untuk mengetahui apakah ada error resource_exhausted.

Cara lain untuk mendiagnosis masalah kuota adalah dengan memeriksa kuota project. Buka IAM & Admin > Quotas 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 perlu ditingkatkan, Anda dapat meminta penyesuaian kuota.

Tabel berpartisi per jam yang menampilkan __UNPARTITIONED__ di kolom ID partisi

Jika tabel tujuan BigQuery dipartisi per jam, baris awalnya akan berada di partisi khusus berlabel __UNPARTITIONED__ dalam tampilan INFORMATION_SCHEMA.PARTITIONS. Ini adalah perilaku yang diharapkan untuk tabel yang menggunakan partisi waktu penyerapan.

BigQuery menggunakan buffer streaming untuk mengoptimalkan proses penulisan. Data mungkin berada di partisi __UNPARTITIONED__ hingga volume yang cukup terkumpul atau setidaknya satu jam telah berlalu. Setelah kondisi ini terpenuhi, BigQuery akan mempartisi ulang data ke partisi per jam yang sesuai.

Anda dapat memantau data dalam partisi __UNPARTITIONED__ menggunakan tampilan INFORMATION_SCHEMA.PARTITIONS.

Langkah berikutnya