Pesan error
Dokumen ini menjelaskan pesan error yang mungkin Anda temukan saat bekerja dengan BigQuery, termasuk kode error HTTP dan langkah-langkah pemecahan masalah yang disarankan.
Untuk mengetahui informasi selengkapnya tentang error kueri, lihat Memecahkan masalah error kueri.
Untuk mengetahui informasi selengkapnya tentang error streaming insert, lihat Memecahkan masalah streaming insert.
Tabel error
Respons dari BigQuery API mencakup kode error HTTP dan objek error dalam isi respons. Objek error biasanya berupa salah satu dari hal berikut:
- Objek
errors
, yang berisi array objekErrorProto
. - Objek
errorResults
, yang berisi satu objekErrorProto
.
Kolom Pesan error dalam tabel berikut dipetakan ke properti reason
dalam objek ErrorProto
.
Tabel ini tidak mencakup semua kemungkinan error HTTP atau error jaringan lainnya. Oleh karena itu, jangan berasumsi bahwa objek error ada di setiap respons error dari BigQuery. Selain itu, Anda mungkin menerima error atau objek error yang berbeda jika menggunakan Library Klien Cloud untuk BigQuery API. Untuk informasi selengkapnya, lihat Library Klien BigQuery API.
Jika Anda menerima kode respons HTTP yang tidak muncul di tabel berikut, kode respons tersebut menunjukkan masalah atau hasil yang diharapkan dengan permintaan HTTP. Kode respons dalam rentang 5xx
menunjukkan error sisi server. Jika Anda menerima kode respons 5xx
, coba lagi permintaan tersebut nanti. Dalam beberapa kasus, kode respons
5xx
mungkin ditampilkan oleh server perantara seperti
proxy. Periksa isi respons dan header respons untuk mengetahui detail tentang
error tersebut. Untuk mengetahui daftar lengkap kode respons HTTP, lihat kode respons HTTP.
Jika Anda menggunakan alat command line bq untuk memeriksa status tugas,
objek error tidak akan ditampilkan secara default. Untuk melihat objek error dan properti reason
yang sesuai yang dipetakan ke tabel berikut, gunakan flag --format=prettyjson
. Contohnya, bq --format=prettyjson show -j
*<job id>*
Untuk melihat logging panjang alat bq, gunakan
--apilog=stdout
. Untuk mempelajari lebih lanjut cara memecahkan masalah alat bq,
lihat Proses debug.
Pesan error | Kode HTTP | Deskripsi | Pemecahan masalah |
---|---|---|---|
accessDenied | 403 |
Error ini ditampilkan saat Anda mencoba mengakses resource seperti set data, tabel, tampilan, atau tugas yang tidak dapat Anda akses. Error ini juga muncul saat Anda mencoba memodifikasi objek hanya baca. |
Hubungi pemilik resource dan
minta akses ke resource untuk
pengguna yang diidentifikasi oleh nilai |
attributeError | 400 |
Error ini ditampilkan saat ada masalah dengan kode pengguna yang memanggil atribut objek tertentu, tetapi tidak ada. |
Pastikan objek yang sedang Anda kerjakan memiliki atribut yang sedang Anda coba akses. Untuk mengetahui informasi selengkapnya tentang error ini, lihat AttributeError. |
backendError | 500, 503, atau 504 |
Error ini menunjukkan bahwa layanan saat ini tidak tersedia. Hal ini dapat
terjadi karena sejumlah masalah sementara, termasuk:
|
Error 5xx adalah masalah sisi layanan dan klien tidak dapat memperbaiki atau
mengontrolnya. Dari sisi klien, untuk mengurangi dampak error 5xx, Anda perlu mencoba ulang permintaan menggunakan backoff eksponensial terpotong. Untuk mengetahui informasi selengkapnya tentang backoff eksponensial, lihat artikel Backoff eksponensial. Namun, ada dua kasus khusus untuk memecahkan masalah error ini: panggilan
Panggilan Jika percobaan ulang tidak efektif dan masalah berlanjut, Anda dapat
menghitung tingkat kegagalan
permintaan dan
menghubungi dukungan. |
badRequest | 400 |
Error |
Guna mengetahui apakah data tersedia untuk operasi tabel DML, periksa
respons |
billingNotEnabled | 403 |
Error ini ditampilkan saat penagihan tidak diaktifkan untuk project tersebut. |
Aktifkan penagihan untuk project di konsolGoogle Cloud . |
billingTierLimitExceeded | 400 |
Error ini ditampilkan saat nilai
|
Error ini paling sering dihasilkan dari eksekusi cross-join yang tidak efisien, baik secara eksplisit maupun implisit, misalnya karena kondisi join yang tidak tepat. Jenis kueri ini tidak cocok untuk harga on-demand karena konsumsi resource yang tinggi, dan secara umum mungkin tidak diskalakan dengan baik. Anda dapat mengoptimalkan kueri atau beralih menggunakan model harga berbasis kapasitas (slot) untuk mengatasi error ini. Untuk mengetahui informasi tentang cara mengoptimalkan kueri, lihat Menghindari anti-pola SQL. |
diblokir | 403 |
Error ini muncul saat BigQuery memasukkan operasi yang Anda coba lakukan ke daftar yang ditolak untuk sementara, biasanya untuk mencegah pemadaman layanan. |
Hubungi dukungan untuk mengetahui informasi selengkapnya. |
duplicate | 409 |
Error ini muncul saat mencoba membuat tugas, set data, atau tabel yang
sudah ada. Error ini juga ditampilkan saat properti
|
Ganti nama resource yang ingin Anda buat, atau ubah nilai
|
internalError | 500 |
Error ini ditampilkan saat terjadi error internal dalam BigQuery. |
Tunggu sesuai dengan persyaratan back-off yang dijelaskan dalam Perjanjian Tingkat Layanan BigQuery, lalu coba operasi lagi. Jika error terus terjadi, hubungi dukungan atau laporkan bug menggunakan Issue Tracker BigQuery. Anda juga dapat mengurangi frekuensi error ini menggunakan Reservations. |
tidak valid | 400 |
Error ini ditampilkan saat ada jenis input yang tidak valid selain kueri yang tidak valid, misalnya
kolom wajib diisi tidak ada atau skema tabel yang tidak valid.
Kueri yang tidak valid akan menampilkan error |
|
invalidQuery | 400 |
Error ini muncul saat Anda mencoba menjalankan kueri yang tidak valid. |
Periksa kueri Anda untuk menemukan error sintaksis. Referensi kueri berisi deskripsi dan contoh cara membuat kueri yang valid. |
invalidUser | 400 |
Error ini ditampilkan saat Anda mencoba menjadwalkan kueri dengan kredensial pengguna yang tidak valid. |
Muat ulang kredensial pengguna, seperti yang dijelaskan dalam Menjadwalkan kueri. |
jobBackendError | 400 |
Error ini ditampilkan saat tugas berhasil dibuat, tetapi gagal dengan
error internal. Anda mungkin melihat error ini di |
Coba lagi tugas dengan |
jobInternalError | 400 |
Error ini ditampilkan saat tugas berhasil dibuat, tetapi gagal dengan
error internal. Anda mungkin melihat error ini di |
Coba lagi tugas dengan |
jobRateLimitExceeded | 400 |
Error ini ditampilkan saat tugas berhasil dibuat, tetapi gagal dengan error
rateLimitExceeded. Anda mungkin melihat
error ini di |
Gunakan
backoff
eksponensial untuk mengurangi kecepatan permintaan, lalu coba lagi tugas dengan
|
notFound | 404 |
Error ini ditampilkan saat Anda merujuk ke resource (set data, tabel, atau tugas) yang tidak ada, atau jika lokasi dalam permintaan tidak cocok dengan lokasi resource (misalnya, lokasi tempat tugas dijalankan). Hal ini juga dapat terjadi saat menggunakan dekorator tabel untuk merujuk ke tabel yang dihapus yang baru-baru ini di-streaming ke. |
Perbaiki nama resource, tentukan lokasi dengan benar, atau tunggu minimal 6 jam setelah streaming sebelum membuat kueri tabel yang dihapus. |
notImplemented | 501 |
Error tugas ini muncul saat Anda mencoba mengakses fitur yang tidak diimplementasikan. |
Hubungi dukungan untuk mengetahui informasi selengkapnya. |
proxyAuthenticationRequired | 407 |
Error ini ditampilkan antara lingkungan klien dan server proxy saat permintaan tidak memiliki kredensial autentikasi yang valid untuk server proxy. Untuk mengetahui informasi selengkapnya, lihat 407 Proxy Authentication Required. |
Pemecahan masalah khusus untuk lingkungan Anda. Jika Anda menerima error ini saat bekerja di Java, pastikan Anda telah menetapkan properti |
quotaExceeded | 403 |
Error ini ditampilkan saat project Anda melebihi kuota BigQuery, kuota kustom, atau saat Anda belum menyiapkan penagihan dan Anda telah melampaui paket gratis untuk kueri. |
Lihat properti |
rateLimitExceeded | 403 |
Error ini ditampilkan jika project Anda melebihi batas kapasitas jangka pendek karena mengirim terlalu banyak permintaan terlalu cepat. Misalnya, lihat batas kapasitas untuk tugas kueri dan batas kapasitas untuk permintaan API. |
Memperlambat rasio permintaan. |
resourceInUse | 400 |
Error ini ditampilkan saat Anda mencoba menghapus set data yang berisi tabel atau saat Anda mencoba menghapus tugas yang sedang berjalan. |
Kosongkan set data sebelum mencoba menghapusnya, atau tunggu tugas selesai sebelum menghapusnya. |
resourcesExceeded | 400 |
Error ini muncul saat tugas Anda menggunakan terlalu banyak resource. |
Error ini muncul saat tugas Anda menggunakan terlalu banyak resource. Untuk informasi pemecahan masalah, lihat Memecahkan masalah error karena sumber daya terlampaui. |
responseTooLarge | 403 |
Error ini ditampilkan saat hasil kueri Anda lebih besar dari
ukuran respons maksimum. Beberapa
kueri dijalankan dalam beberapa tahap, dan error ini akan ditampilkan saat salah satu tahap
menampilkan ukuran respons yang terlalu besar, meskipun hasil akhir lebih kecil
dari maksimum. Error ini biasanya muncul saat kueri menggunakan klausa
|
Menambahkan klausa |
dihentikan | 200 |
Kode status ini ditampilkan saat tugas dibatalkan. |
|
tableUnavailable | 400 |
Tabel BigQuery tertentu didukung oleh data yang dikelola oleh tim produk Google lainnya. Error ini menunjukkan bahwa salah satu tabel ini tidak tersedia. |
Jika pesan error ini muncul, Anda dapat mencoba kembali permintaan tersebut (lihat saran pemecahan masalah internalError) atau menghubungi tim produk Google yang memberi Anda akses ke data mereka. |
timeout | 400 |
Waktu tugas habis. |
Pertimbangkan untuk mengurangi jumlah pekerjaan yang dilakukan oleh operasi Anda agar dapat diselesaikan sesuai batas yang ditetapkan. Untuk mengetahui informasi selengkapnya, lihat Memecahkan masalah error kuota dan batas. |
Contoh respons error
GET https://bigquery.googleapis.com/bigquery/v2/projects/12345/datasets/foo
Response:
[404]
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found: Dataset myproject:foo"
}],
"code": 404,
"message": "Not Found: Dataset myproject:foo"
}
}
Menghitung rasio permintaan yang gagal dan uptime
Sebagian besar error 500 dan 503 dapat diselesaikan dengan melakukan percobaan ulang dengan backoff eksponensial. Jika error 500 dan 503 masih berlanjut, Anda dapat menghitung tingkat keseluruhan permintaan yang gagal dan waktu beroperasi yang sesuai untuk membandingkannya dengan Perjanjian Tingkat Layanan (SLA) BigQuery untuk menentukan apakah layanan berfungsi seperti yang diharapkan.
Untuk menghitung tingkat keseluruhan permintaan yang gagal selama 30 hari terakhir, ambil jumlah permintaan yang gagal untuk panggilan atau metode API tertentu dari 30 hari terakhir dan bagi dengan jumlah total permintaan untuk panggilan atau metode API tersebut dari 30 hari terakhir. Kalikan nilai ini dengan 100 untuk mendapatkan persentase rata-rata permintaan yang gagal selama 30 hari.
Misalnya, Anda dapat membuat kueri data Cloud Logging untuk mendapatkan jumlah total permintaan jobs.insert
dan jumlah permintaan jobs.insert
yang gagal serta melakukan penghitungan. Anda juga dapat memperoleh nilai rasio error dari
dasbor API atau menggunakan
Metrics Explorer di Cloud Monitoring. Opsi ini tidak akan menyertakan data tentang masalah jaringan atau perutean yang terjadi antara klien dan BigQuery, jadi kami juga merekomendasikan penggunaan sistem pelaporan dan logging sisi klien untuk penghitungan tingkat kegagalan yang lebih akurat.
Pertama, kurangi 100% dengan tingkat keseluruhan permintaan yang gagal. Jika nilai ini lebih besar dari atau sama dengan nilai yang dijelaskan dalam SLA BigQuery, maka waktu aktif juga memenuhi SLA BigQuery. Namun, jika nilai ini kurang dari nilai yang dijelaskan dalam SLA, hitung waktu aktif secara manual.
Untuk menghitung uptime, Anda perlu mengetahui jumlah menit yang dianggap sebagai waktu nonaktif layanan. Periode nonaktif layanan berarti periode satu menit dengan tingkat error lebih dari 10% yang dihitung sesuai dengan definisi SLA. Untuk menghitung waktu beroperasi, ambil total menit dari 30 hari terakhir dan kurangi total menit saat layanan tidak berfungsi. Bagilah waktu yang tersisa dengan total menit dari 30 hari terakhir dan kalikan nilai ini dengan 100 untuk mendapatkan persentase waktu aktif selama 30 hari. Untuk mengetahui informasi selengkapnya tentang definisi dan penghitungan terkait SLA , lihat Perjanjian Tingkat Layanan (SLA) BigQuery
Jika persentase waktu aktif bulanan Anda lebih besar dari atau sama dengan nilai yang dijelaskan dalam SLA BigQuery, error kemungkinan besar disebabkan oleh masalah sementara, sehingga Anda dapat terus mencoba lagi menggunakan penundaan eksponensial.
Jika waktu aktif di bawah nilai yang tercantum dalam SLA, hubungi dukungan untuk mendapatkan bantuan dan bagikan perhitungan waktu aktif dan rasio error keseluruhan yang diamati.
Error autentikasi
Error yang ditampilkan oleh sistem pembuatan token OAuth akan menampilkan objek JSON berikut, seperti yang ditetapkan oleh spesifikasi OAuth2.
{"error" : "_description_string_"}
Error ini disertai dengan error Permintaan Buruk 400
HTTP atau error HTTP
401
Tidak Sah. _description_string_
adalah salah satu kode error yang ditentukan oleh spesifikasi OAuth2. Contoh:
{"error":"invalid_client"}
Meninjau error
Anda dapat menggunakan penjelajah log untuk melihat error autentikasi untuk tugas, pengguna, atau cakupan lainnya tertentu. Berikut adalah contoh filter Logs Explorer yang dapat Anda gunakan untuk meninjau error autentikasi:
Telusuri tugas yang gagal karena masalah izin di log audit Kebijakan Ditolak:
resource.type="bigquery_resource" protoPayload.status.message=~"Access Denied" logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access"
Ganti
PROJECT_ID
dengan ID project yang berisi resource.Telusuri pengguna atau akun layanan tertentu yang digunakan untuk autentikasi:
resource.type="bigquery_resource" protoPayload.authenticationInfo.principalEmail="EMAIL"
Ganti
EMAIL
dengan alamat email pengguna atau akun layanan.Telusuri perubahan kebijakan Identity and Access Management di log audit Aktivitas Admin:
protoPayload.methodName=~"SetIamPolicy" logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
Cari perubahan pada set data BigQuery tertentu di log audit Akses Data:
resource.type="bigquery_resource" protoPayload.resourceName="projects/PROJECT_ID/datasets/DATASET_ID" logName=projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
Ganti
DATASET_ID
dengan ID set data yang berisi resource.
Pesan error konektivitas
Tabel berikut mencantumkan pesan error yang mungkin Anda lihat karena masalah konektivitas terputus-putus saat menggunakan library klien atau memanggil BigQuery API dari kode Anda:
Pesan error | Library klien atau API | Pemecahan masalah |
---|---|---|
com.google.cloud.bigquery.BigQueryException: Read timed out | Java | Tetapkan nilai waktu tunggu yang lebih besar. |
Connection has been shutdown: javax.net.ssl.SSLException: java.net.SocketException: Connection reset at com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc.translate(HttpBigQueryRpc.java:115) | Java | Terapkan mekanisme percobaan ulang dan tetapkan nilai waktu tunggu yang lebih besar. |
javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake | Java | Terapkan mekanisme percobaan ulang dan tetapkan nilai waktu tunggu yang lebih besar. |
BrokenPipeError: [Errno 32] Broken pipe | Python | Menerapkan mekanisme percobaan ulang. Untuk mengetahui informasi selengkapnya tentang error ini, lihat BrokenPipeError. |
Koneksi dibatalkan. RemoteDisconnected('Remote end closed connection without response' | Python | Tetapkan nilai waktu tunggu yang lebih besar. |
SSLEOFError (EOF terjadi karena pelanggaran protokol) | Python | Error ini ditampilkan, bukan error HTTP 413 (ENTITY_TOO_LARGE ). Kurangi ukuran permintaan. |
TaskCanceledException: Tugas dibatalkan | Library .NET | Tingkatkan nilai waktu tunggu di sisi klien. |
google.api_core.exceptions.PreconditionFailed: 412 PATCH | Python | Error ini ditampilkan saat mencoba memperbarui resource tabel menggunakan permintaan HTTP. Pastikan ETag di header HTTP tidak sudah tidak berlaku. Untuk operasi tingkat tabel atau set data, pastikan resource tidak berubah sejak terakhir kali di-instantiate dan buat ulang objek jika perlu. |
Gagal membuat koneksi baru: [Errno 110] Connection timed out | Library Klien | Error ini ditampilkan saat permintaan ini telah mencapai akhir file (EOF) saat melakukan streaming atau membaca data dari BigQuery. Terapkan mekanisme coba lagi dan tetapkan nilai waktu tunggu yang lebih besar. |
socks.ProxyConnectionError: Error connecting to HTTP proxy
|
Library Klien | Memecahkan masalah status dan setelan proxy. Terapkan mekanisme coba lagi dan tetapkan nilai waktu tunggu yang lebih besar. |
Menerima EOF atau 0 byte yang tidak terduga dari aliran transport | Library Klien | Terapkan mekanisme coba lagi dan tetapkan nilai waktu tunggu yang lebih besar. |
Pesan error konsolGoogle Cloud
Tabel berikut berisi pesan error yang mungkin Anda lihat saat bekerja di konsolGoogle Cloud .
Pesan error | Deskripsi | Pemecahan masalah |
---|---|---|
Respons error tidak diketahui dari server. | Error ini ditampilkan saat konsol Google Cloud menerima error yang tidak diketahui dari server; misalnya, saat Anda mengklik set data atau jenis link lainnya, dan halaman tidak dapat ditampilkan. | Beralihlah ke mode samaran atau pribadi pada browser dan ulangi tindakan yang menyebabkan error. Jika tidak ada error yang menyebabkan mode samaran, maka error tersebut mungkin disebabkan oleh ekstensi browser, seperti pemblokir iklan. Nonaktifkan ekstensi browser Anda saat tidak dalam mode samaran, dan lihat apakah tindakan tersebut dapat menyelesaikan masalah. |