Menginterpretasikan kode galat di Synapse Analytics

Saat ini, ada banyak faktor yang dapat menjadi penyebab mengapa aplikasi spark gagal di Azure Synapse Analytics. Sebagai contoh, penyebabnya mungkin saja kesalahan sistem atau bahkan kesalahan terkait pengguna. Sebelumnya, semua kesalahan terkait dengan pekerjaan yang gagal di Synapse Analytics muncul dengan kode galat generik yang menampilkan LIVY_JOB_STATE_DEAD. Kode galat ini tidak memberikan wawasan lebih lanjut mengenai alasan di balik gagalnya pekerjaan. Kita membutuhkan banyak upaya untuk mengidentifikasi akar penyebabnya dengan memeriksa driver, eksekutor, Kejadian Spark, log Livy, kemudian menemukan resolusi atas masalah tersebut.

Cuplikan layar kode galat Apache Spark tanpa pesan yang terperinci.

Kami telah memperkenalkan daftar kode galat yang lebih tepat sebagai ganti dari pesan generik sebelumnya. Pesan yang baru menjelaskan penyebab kegagalan. Setiap kali pekerjaan gagal di Azure Synapse Analytics, fitur penanganan kesalahan mengurai dan memeriksa log di backend untuk mengidentifikasi akar penyebabnya. Kemudian fitur tersebut akan menampilkan pesan kepada pengguna di panel pemantauan sekaligus dengan langkah-langkah untuk mengatasi masalah tersebut.

Cuplikan layar kode galat Apache Spark dengan pesan terperinci.

Mengaktifkan klasifikasi kesalahan di Synapse

Fitur klasifikasi kesalahan dapat diaktifkan atau dinonaktifkan dengan mengatur konfigurasi Spark berikut ke true atau false di tingkat pekerjaan atau kumpulan:

livy.rsc.synapse.error-classification.enabled

Bagian berikut berisi beberapa jenis kesalahan yang saat ini didukung. Kami terus menyempurnakan dan menambahkan lebih banyak kode galat ke dalam daftar ini dengan meningkatkan model kami.

Kategori kode galat

Setiap kode galat akan menjadi bagian dari salah satu dari empat wadah berikut:

  1. Pengguna - Menunjukkan kesalahan pengguna
  2. Sistem - Menunjukkan kesalahan sistem
  3. Ambigu - Bisa jadi berupa kesalahan pengguna atau sistem
  4. Tidak dikenal - Belum ada klasifikasi, kemungkinan besar disebabkan karena jenis kesalahan tidak disertakan dalam model

Contoh kode galat untuk setiap jenis klasifikasi

Spark_User_TypeError_TypeNotIterable

Di Python, kesalahan TypeError: argument of type 'insert type' is not iterable terjadi ketika operator keanggotaan (in, not in) digunakan untuk memvalidasi keanggotaan nilai dalam objek yang tidak dapat diulang seperti daftar, tuple, kamus. Penyebabnya biasanya berasal dari pencarian nilai dalam objek yang tidak dapat diulang. Solusi yang dapat dilakukan:

  • Periksa apakah nilai ada di objek yang dapat diulang.
  • Jika Anda ingin memeriksa satu nilai ke nilai lainnya, gunakan operator logis, bukan Operator Keanggotaan.
  • Jika operator keanggotaan berisi nilai "Tidak Ada", artinya operator tidak akan dapat melakukan pengulangan, dan pemeriksaan null atau default yang ditetapkan harus dilakukan.
  • Periksa apakah jenis nilai yang digunakan benar-benar dapat diperiksa dan tidak ada kesalahan pengetikan.

Spark_System_ABFS_OperationFailed

Operasi dengan ADLS Gen2 gagal.

Kesalahan ini biasanya terjadi karena masalah terkait izin.

Pastikan bahwa semua sumber daya ADLS Gen2 yang direferensikan dalam pekerjaan Spark telah memiliki peran RBAC "Kontributor Data Storage Blob" pada akun penyimpanan yang akan dibaca dan ditulis pekerjaan. Periksa log untuk aplikasi Spark ini. Buka Synapse Studio Anda, kemudian pilih tab Monitor dari panel kiri. Dari bagian Aktivitas, pilih Aplikasi Apache Spark dan temukan pekerjaan Spark Anda dari daftar yang ada. Untuk nama akun penyimpanan ADLS Gen2 yang mengalami masalah ini, periksa log yang tersedia di tab Log, tepatnya di bagian bawah halaman ini.

Spark_Ambiguous_ClassLoader_NoClassDefFound

Kelas yang diperlukan oleh kode tidak dapat ditemukan ketika skrip dijalankan.

Silakan lihat halaman berikut yang berisi dokumentasi manajemen paket:

Untuk skenario Notebook: Paket pengelolaan Apache Spark untuk pekerjaan interaktif

Untuk skenario batch Spark (lihat bagian 6): Paket pengelolaan Apache Spark untuk pekerjaan batch

Pastikan bahwa semua dependensi kode telah disertakan dalam eksekusi Synapse JAR. Jika Anda tidak menyertakan atau tidak dapat menyertakan JAR pihak ketiga dengan kode Anda sendiri, pastikan bahwa semua dependensi sudah disertakan dalam paket ruang kerja untuk kumpulan Spark tempat Anda menjalankan kode, atau telah disertakan dalam daftar "File referensi" untuk pengiriman batch Spark. Lihat dokumentasi di atas untuk informasi lebih lanjut.

Spark_Unknown_Unknown_java.lang.Exception

Kegagalan yang tidak diketahui, model tidak dapat mengklasifikasikan.

Kode galat (termasuk dan yang tidak ada dalam daftar yang ditunjukkan di atas) sekaligus dengan instruksi pemecahan masalah tentang cara mengatasi masalah akan muncul di panel galat aplikasi Synapse Studio jika fitur ini diaktifkan.

Catatan

Jika Anda membuat alat apa pun di sekitar pekerjaan pemantauan Synapse yang memeriksa pekerjaan yang gagal dengan memfilter kode galat LIVY_JOB_STATE_DEAD, artinya aplikasi Anda tidak akan berfungsi lagi. Karena kode galat yang ditampilkan akan berbeda, seperti yang telah disebutkan di atas. Ubah skrip apa pun yang sesuai untuk menggunakan fitur ini, atau nonaktifkan fitur jika tidak diperlukan.