Gunakan Diagnostik Spark SQL untuk mengatasi hambatan kinerja pada kueri Spark SQL Anda. Misalnya, Anda dapat:
Memvisualisasikan pohon rencana eksekusi untuk mengidentifikasi operator terlambat hanya dengan sekilas.
Mendeteksi pembengkakan data join—yaitu saat suatu join menghasilkan lebih banyak baris daripada yang diterimanya.
Mendeteksi kesenjangan data yang dipindai—yaitu saat data tidak merata didistribusikan di seluruh tabel, sehingga menyebabkan efek ekor panjang (long tail effect).
Diagnostik hanya tersedia untuk kueri Spark SQL yang berhasil diselesaikan dalam 14 hari terakhir.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster AnalyticDB for MySQL edisi Data LakehouseData Lakehouse Edition
Sebuah kelompok sumber daya pekerjaan yang dibuat untuk Kluster. Untuk informasi selengkapnya, lihat Buat kelompok sumber daya.
Akun database yang dibuat untuk kluster tersebut:
Akun Alibaba Cloud: buat akun istimewa. Untuk informasi selengkapnya, lihat bagian "Create a privileged account" dalam Create a database account.
Pengguna Resource Access Management (RAM): buat akun istimewa dan akun standar, lalu kaitkan akun standar tersebut dengan pengguna RAM. Untuk informasi selengkapnya, lihat Create a database account dan Associate or disassociate a database account with or from a RAM user.
AnalyticDB for MySQL yang telah diberi otorisasi untuk mengasumsikan role AliyunADBSparkProcessingDataRole. Untuk informasi selengkapnya, lihat Perform authorization.
Diagnosis kueri Spark SQL
Masuk ke Konsol AnalyticDB for MySQL. Di pojok kiri atas, pilih wilayah. Di panel navigasi sebelah kiri, klik ClustersData Lakehouse Edition. Pada tab Data Lakehouse Edition, temukan kluster target lalu klik ID kluster tersebut.
Di panel navigasi sebelah kiri, pilih Diagnostics and Optimization > Spark SQL Diagnostics and Optimization. Daftar kueri menampilkan kueri Spark SQL terbaru yang tersedia untuk diagnosis. Tabel berikut menjelaskan kolom-kolomnya.
Column Description SQL Pernyataan SQL yang dieksekusi. Query ID ID kueri. Execution ID ID urutan pernyataan SQL dalam aplikasi Spark SQL. Status Status eksekusi. Nilai yang valid: Completed, Running, Failed. Started At Waktu saat kueri dikirimkan. Execution Duration Total waktu untuk mengeksekusi pernyataan SQL. Maximum Operator Exclusive Time Waktu terlama suatu operator menggunakan resource secara eksklusif selama eksekusi. Peak Memory Penggunaan memori puncak dari kueri tersebut. Scanned Data Jumlah data yang dikembalikan dari lapisan penyimpanan ke lapisan komputasi. Actions Klik Diagnose untuk membuka detail eksekusi dan hasil diagnosis kueri tersebut. Temukan kueri yang akan didiagnosis, lalu klik Diagnose pada kolom Actions.
Pada halaman Query Properties, klik tab Execution Plan untuk melihat bagan hierarki pohon rencana eksekusi.
Klik Query-level Diagnostic Results di sebelah kanan pohon rencana eksekusi untuk melihat temuan diagnosis dan saran optimasi untuk kueri tersebut.
Hasil diagnosis tingkat kueri
AnalyticDB for MySQL menganalisis statistik tingkat kueri dan menampilkan saran optimasi ketika mendeteksi pola kinerja yang sudah dikenal.
Pembengkakan data dalam join
Apa artinya: Operator join menghasilkan lebih banyak baris daripada yang diterimanya. Hal ini menunjukkan join yang tidak wajar sehingga mengonsumsi sumber daya komputasi dan memori secara berlebihan, yang memperlambat kueri.
Perbaikan: Saring baris yang tidak terlibat dalam join sebelum operasi join dijalankan, untuk mengurangi jumlah data yang harus diproses oleh operator join.
Kesenjangan dalam jumlah data yang dipindai
Apa artinya: Jumlah data yang dipindai berbeda signifikan di antara tabel selama eksekusi kueri. Efek ekor panjang—di mana tugas terlambat menentukan waktu penyelesaian keseluruhan—memperpanjang waktu pembacaan data dan menurunkan kinerja kueri.
Perbaikan: Pilih kolom kunci distribusi yang mendistribusikan data lebih merata di seluruh partisi untuk mengurangi volume pemindaian per tabel.