Apache Spark Advisor di Azure Synapse Analytics (Pratinjau)

Penasihat Apache Spark menganalisis perintah dan kode yang dijalankan oleh Spark dan menampilkan saran real-time untuk eksekusi Notebook. Spark advisor memiliki pola bawaan untuk membantu pengguna menghindari kesalahan umum, menawarkan rekomendasi untuk pengoptimalan kode, melakukan analisis kesalahan, dan menemukan akar penyebab kegagalan.

Saran bawaan

Dapat mengembalikan hasil yang tidak konsisten saat menggunakan 'randomSplit'

Hasil yang tidak konsisten atau tidak akurat dapat dikembalikan saat bekerja dengan hasil metode 'randomSplit'. Gunakan penembolokan Apache Spark (RDD) sebelum menggunakan metode 'randomSplit'.

Method randomSplit() setara dengan melakukan sample() pada bingkai data Anda beberapa kali, dengan setiap sampel mengambil kembali, mempartisi, dan mengurutkan bingkai data Anda dalam partisi. Distribusi data di seluruh partisi dan urutan sortir penting untuk randomSplit() dan sample(). Jika perubahan pada pengambilan data, mungkin ada duplikat, atau nilai yang hilang di seluruh pemisahan dan sampel yang sama menggunakan nilai awal yang sama dapat menghasilkan hasil yang berbeda.

Inkonsistensi ini mungkin tidak terjadi pada setiap proses, tetapi untuk menghilangkannya sepenuhnya, cache bingkai data Anda, partisi ulang pada kolom, atau terapkan fungsi agregat seperti groupBy.

Nama tampilan/tabel sudah digunakan

Tampilan sudah ada dengan nama yang sama dengan tabel yang dibuat, atau tabel sudah ada dengan nama yang sama dengan tampilan yang dibuat. Ketika nama ini digunakan dalam kueri atau aplikasi, hanya tampilan yang akan dikembalikan apa pun yang dibuat terlebih dahulu. Untuk menghindari konflik, ganti nama tabel atau tampilan.

Tidak dapat mengenali petunjuk

Kueri yang dipilih berisi petunjuk yang tidak dikenali. Verifikasi bahwa petunjuk dieja dengan benar.

spark.sql("SELECT /*+ unknownHint */ * FROM t1")

Tidak dapat menemukan nama relasi yang ditentukan

Tidak dapat menemukan relasi yang ditentukan dalam petunjuk. Verifikasi bahwa relasi dieja dengan benar dan dapat diakses dalam cakupan petunjuk.

spark.sql("SELECT /*+ BROADCAST(unknownTable) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")

Petunjuk dalam kueri mencegah petunjuk lain diterapkan

Kueri yang dipilih berisi petunjuk yang mencegah petunjuk lain diterapkan.

spark.sql("SELECT /*+ BROADCAST(t1), MERGE(t1, t2) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")

Aktifkan 'spark.advise.divisionExprConvertRule.enable' untuk mengurangi penyebaran kesalahan pembulatan

Kueri ini berisi ekspresi dengan jenis Ganda. Kami menyarankan agar Anda mengaktifkan konfigurasi 'spark.advise.divisionExprConvertRule.enable', yang dapat membantu mengurangi ekspresi pembagian dan mengurangi penyebaran kesalahan pembulatan.

"t.a/t.b/t.c" convert into "t.a/(t.b * t.c)"

Aktifkan 'spark.advise.nonEqJoinConvertRule.enable' untuk meningkatkan performa kueri

Kueri ini berisi penggabungan yang memakan waktu karena kondisi "Atau" dalam kueri. Kami menyarankan agar Anda mengaktifkan konfigurasi 'spark.advise.nonEqJoinConvertRule.enable', yang dapat membantu mengonversi penggabungan yang dipicu oleh kondisi "Atau" ke SMJ atau BHJ untuk mempercepat kueri ini.

Optimalkan tabel delta dengan pemadatan file kecil

Kueri ini ada di tabel delta dengan banyak file kecil. Untuk meningkatkan performa kueri, jalankan perintah OPTIMIZE pada tabel delta. Detail selengkapnya dapat ditemukan dalam artikel ini.

Optimalkan tabel Delta dengan ZOrder

Kueri ini ada di tabel Delta dan berisi filter yang sangat selektif. Untuk meningkatkan performa kueri, jalankan perintah OPTIMIZE ZORDER BY pada tabel delta. Detail selengkapnya dapat ditemukan dalam artikel ini.

Pengalaman pengguna

Penasihat Apache Spark menampilkan saran, termasuk info, peringatan, dan kesalahan, di output sel Notebook secara real time.

  • info

    Cuplikan layar memperlihatkan untuk informasi saran.

  • Peringatan

    Cuplikan layar yang menunjukkan peringatan saran.

  • Kesalahan

    Cuplikan layar memperlihatkan kesalahan saran.

Langkah berikutnya

Untuk informasi selengkapnya tentang memantau aplikasi Apache Spark, lihat artikel Memantau aplikasi Apache Spark menggunakan Synapse Studio .

Untuk informasi selengkapnya untuk membuat buku catatan, lihat Cara menggunakan buku catatan Synapse