Node E-MapReduce (EMR) Spark SQL memproses data terstruktur menggunakan mesin kueri SQL terdistribusi untuk meningkatkan efisiensi eksekusi pekerjaan.
Prasyarat
-
Sebelum memulai pengembangan node, jika Anda memerlukan lingkungan komponen kustom, buat custom image berdasarkan image resmi
dataworks_emr_base_task_pod, lalu gunakan di Data Studio. Untuk informasi selengkapnya, lihat Buat custom image dan Gunakan image dalam pengembangan data.Misalnya, Anda dapat mengganti paket JAR Spark atau menambahkan dependensi pada
libraries,files, atauJAR packagestertentu saat membuat custom image. -
Buat kluster Alibaba Cloud EMR dan daftarkan ke DataWorks. Untuk informasi selengkapnya, lihat Data Studio Baru: Lampirkan sumber daya komputasi EMR.
-
(Opsional, untuk pengguna RAM) Pengguna Resource Access Management (RAM) untuk pengembangan task harus ditambahkan ke ruang kerja dan diberikan peran Development atau Workspace Administrator (peran ini mencakup izin yang luas dan harus diberikan dengan hati-hati). Untuk informasi selengkapnya, lihat Tambahkan anggota ruang kerja.
Jika Anda menggunakan akun root, lewati langkah ini.
-
Anda dapat menggunakan custom image untuk membangun lingkungan pengembangan spesifik bagi task Anda.
Batasan
-
Node EMR Shell hanya dapat dijalankan pada serverless resource group (disarankan) atau exclusive resource group for scheduling. Penggunaan custom image untuk pengembangan data memerlukan serverless resource group.
-
Untuk mengelola metadata DataLake atau kluster kustom di DataWorks, Anda harus terlebih dahulu mengonfigurasi EMR-HOOK pada kluster tersebut. Untuk informasi selengkapnya, lihat Konfigurasi EMR-HOOK untuk Spark SQL.
CatatanTanpa konfigurasi EMR-HOOK pada kluster, Anda tidak dapat melihat metadata secara real-time, menghasilkan log audit, melihat alur data, atau menjalankan tugas governance terkait EMR di DataWorks.
-
Kluster EMR on ACK Spark tidak mendukung penampilan alur data. Kluster EMR Serverless Spark mendukung penampilan alur data.
-
Pendaftaran fungsi melalui UI didukung pada kluster DataLake dan kustom, tetapi tidak didukung pada kluster EMR on ACK Spark atau EMR Serverless Spark.
Catatan
Jika Anda telah mengaktifkan kontrol akses Ranger untuk Spark di kluster EMR yang terkait dengan ruang kerja saat ini:
-
Task Spark yang menggunakan image default secara otomatis mendukung fitur ini.
-
Untuk menjalankan task Spark dengan custom image, ajukan tiket ke dukungan teknis untuk meminta peningkatan image.
Prosedur
-
Pada tab konfigurasi node EMR Spark SQL, lakukan operasi pengembangan berikut.
Kembangkan kode SQL
Di editor SQL, tulis kode task Anda. Definisikan variabel menggunakan format ${variable_name} dan tetapkan nilainya di bagian Scheduling Parameters pada panel Scheduling Settings untuk meneruskan parameter secara dinamis ke task terjadwal. Untuk informasi selengkapnya tentang penggunaan parameter penjadwalan, lihat Sumber dan ekspresi parameter penjadwalan. Kode berikut merupakan contoh.
SHOW TABLES; -- Definisikan variabel bernama var menggunakan ${var}. Jika Anda menetapkan variabel ini menjadi ${yyyymmdd}, Anda dapat membuat tabel dengan tanggal bisnis sebagai sufiks. CREATE TABLE IF NOT EXISTS userinfo_new_${var} ( ip STRING COMMENT'IP address', uid STRING COMMENT'User ID' )PARTITIONED BY( dt STRING ); -- Dapat digunakan bersama parameter penjadwalan.(Opsional) Konfigurasi parameter node EMR
Pada bagian di panel Run Configuration, konfigurasikan parameter berikut:
-
Spark parameter: Properti Spark native. Untuk informasi selengkapnya, lihat Spark Configuration. Anda dapat langsung memuat templat konfigurasi Spark dari Serverless Spark. Hal ini menyederhanakan konfigurasi dan memastikan konsistensi.
-
DataWorks parameters: Parameter lanjutan yang tersedia bergantung pada jenis kluster EMR. Tabel berikut menjelaskan parameter tersebut.
DataLake atau kustom di ECS
Parameter
Deskripsi
queue
Antrian penjadwalan tempat pekerjaan dikirimkan. Antrian default adalah default. Untuk informasi selengkapnya tentang EMR YARN, lihat Konfigurasi antrian dasar.
priority
Prioritas pekerjaan. Nilai default: 1.
FLOW_SKIP_SQL_ANALYZE
Mode eksekusi pernyataan SQL. Nilai yang valid:
-
true: Mengeksekusi beberapa pernyataan SQL sekaligus. -
false(default): Mengeksekusi satu pernyataan SQL dalam satu waktu.
CatatanParameter ini hanya berlaku untuk uji coba di lingkungan Data Studio.
ENABLE_SPARKSQL_JDBC
Metode pengiriman kode SQL. Nilai yang valid:
-
true: Mengirimkan kode SQL melalui JDBC. Kode dikirim ke Spark Thrift server jika layanan Kyuubi tidak tersedia, atau ke Kyuubi jika tersedia. Dalam mode ini, parameter Spark kustom didukung.Kedua metode mendukung alur data untuk metadata. Namun, untuk task yang dikirim ke Thrift server, informasi output dari node task yang sesuai dengan metadata tidak tersedia.
-
false(default): Mengirimkan kode SQL menggunakan perintahspark-submit --cluster. Mode ini mendukung alur data untuk metadata dan informasi output baik untuk Spark 2 maupun Spark 3. Parameter Spark kustom juga didukung.Catatan-
Mode pengiriman
spark-submit --clustermembuat file dan direktori sementara di direktori/tmpHDFS di kluster EMR secara default. Anda harus memiliki izin baca dan tulis pada direktori ini. -
Saat menggunakan mode pengiriman
spark-submit --cluster, Anda dapat langsung menambahkan parameter SparkConf kustom ke konfigurasi lanjutan. Saat DataWorks mengirimkan kode, parameter baru tersebut akan ditambahkan secara otomatis ke perintah. Contoh:"spark.driver.memory" : "2g".
-
DATAWORKS_SESSION_DISABLE
Parameter ini hanya berlaku untuk uji coba di Data Studio. Nilai yang valid:
-
true: Koneksi JDBC baru dibuat setiap kali pernyataan SQL dijalankan. -
false(default): Koneksi JDBC yang sama digunakan ulang saat menjalankan pernyataan SQL berbeda dalam satu node.
CatatanJika parameter ini diatur ke
false,yarn applicationIdHive tidak dicetak di log. Untuk mencetakyarn applicationId, atur parameter ini ketrue.Others
Parameter Spark Configuration kustom. Anda dapat menambahkan properti khusus Spark.
Format:
"spark.eventLog.enabled" : false,"spark.eventLog.memory" : "12g". DataWorks secara otomatis menambahkan parameter tersebut ke kode yang dikirimkan ke kluster EMR dalam format--conf key=value. Untuk informasi selengkapnya tentang konfigurasi parameter, lihat Konfigurasi parameter Spark global.Catatan-
DataWorks mendukung parameter Spark global di tingkat ruang kerja, yang digunakan di berbagai modul. Anda dapat mengonfigurasi apakah parameter global ini menggantikan parameter Spark spesifik modul.
-
Untuk mengaktifkan kontrol akses Ranger, tambahkan konfigurasi
spark.hadoop.fs.oss.authorization.method=rangerdi Konfigurasi parameter Spark global.
EMR Serverless Spark
Untuk informasi tentang pengaturan parameter, lihat Konfigurasi parameter untuk pekerjaan Spark.
Parameter
Deskripsi
FLOW_SKIP_SQL_ANALYZE
Mode eksekusi pernyataan SQL. Nilai yang valid:
-
true: Mengeksekusi beberapa pernyataan SQL sekaligus. -
false(default): Mengeksekusi satu pernyataan SQL dalam satu waktu.
CatatanParameter ini hanya berlaku untuk uji coba di lingkungan Data Studio.
DATAWORKS_SESSION_DISABLE
Menentukan metode pengiriman task. Secara default, task yang dijalankan di Data Studio dikirim ke sesi SQL. Gunakan parameter ini untuk mengirimkan task ke antrian.
-
true: Task dikirim ke antrian untuk dieksekusi. Secara default, antrian default yang ditentukan saat Anda mengikat sumber daya komputasi akan digunakan. Ketika parameter DATAWORKS_SESSION_DISABLE diatur ke true, Anda dapat mengonfigurasi parameterSERVERLESS_QUEUE_NAMEuntuk menentukan antrian tempat task dikirimkan untuk dieksekusi di Data Studio. -
false(default): mengirimkan task ke sesi SQL untuk dieksekusi.CatatanParameter ini hanya berlaku saat Anda menjalankan task di Data Studio. Parameter ini tidak berlaku untuk task terjadwal.
SERVERLESS_RELEASE_VERSION
Versi mesin Spark. Secara default, task menggunakan Default Engine Version yang dikonfigurasi untuk kluster di bawah Compute Resource di Management Center. Konfigurasikan parameter ini untuk menggunakan versi mesin berbeda pada task tertentu.
CatatanParameter
SERVERLESS_RELEASE_VERSIONhanya berlaku ketika sesi SQL yang ditentukan untuk kluster terdaftar berada dalam status stopped di konsol EMR Serverless Spark.SERVERLESS_QUEUE_NAME
Menentukan antrian sumber daya untuk pengiriman task. Secara default, task menggunakan Default Resource Queue yang dikonfigurasi untuk kluster di Clusters di bawah Management Center. Untuk mengisolasi dan mengelola sumber daya, Anda dapat menambahkan antrian. Untuk informasi selengkapnya, lihat Kelola antrian sumber daya.
Metode konfigurasi:
-
Tentukan antrian sumber daya untuk pengiriman task dengan mengonfigurasi parameter node.
-
Tentukan antrian sumber daya untuk pengiriman task di Konfigurasi parameter Spark global.
Catatan-
Parameter
SERVERLESS_QUEUE_NAMEhanya berlaku ketika sesi SQL yang ditentukan untuk kluster terdaftar berada dalam status stopped di konsol EMR Serverless Spark. -
Saat dijalankan di Data Studio: Anda harus terlebih dahulu mengatur
DATAWORKS_SESSION_DISABLEketrueagar task dikirim ke antrian untuk dieksekusi. ParameterSERVERLESS_QUEUE_NAMEyang Anda konfigurasi untuk menentukan antrian task hanya berlaku jika pengaturan ini diaktifkan. -
Untuk pekerjaan terjadwal di Operation Center: Task selalu dikirim ke antrian untuk dieksekusi dan tidak dapat dikirim ke sesi SQL.
SERVERLESS_SQL_COMPUTE
Sesi SQL yang digunakan. Secara default, Default SQL Compute yang dikonfigurasi untuk kluster di Compute Resource di Management Center digunakan. Untuk menggunakan sesi SQL berbeda pada task berbeda, konfigurasikan parameter ini. Untuk membuat dan mengelola sesi SQL, lihat Kelola sesi SQL.
Others
Parameter Spark Configuration kustom. Anda dapat menambahkan properti khusus Spark.
Format:
"spark.eventLog.enabled": false. DataWorks secara otomatis menambahkan parameter tersebut ke kode yang dikirimkan ke kluster EMR dalam format--conf key=value.CatatanDataWorks memungkinkan Anda mengonfigurasi parameter Spark global di tingkat ruang kerja. Parameter ini digunakan oleh berbagai modul DataWorks. Anda dapat menentukan apakah parameter Spark global memiliki prioritas lebih tinggi daripada parameter Spark yang dikonfigurasi di modul tertentu. Untuk informasi selengkapnya tentang cara mengonfigurasi parameter Spark global, lihat Konfigurasi parameter Spark global.
Spark on ACK
Parameter
Deskripsi
FLOW_SKIP_SQL_ANALYZE
Mode eksekusi pernyataan SQL. Nilai yang valid:
-
true: Mengeksekusi beberapa pernyataan SQL sekaligus. -
false(default): Mengeksekusi satu pernyataan SQL dalam satu waktu.
CatatanParameter ini hanya berlaku untuk uji coba di lingkungan Data Studio.
Others
Parameter Spark Configuration kustom. Anda dapat menambahkan properti khusus Spark.
Format:
"spark.eventLog.enabled": false. DataWorks secara otomatis menambahkan parameter tersebut ke kode yang dikirimkan ke kluster EMR dalam format--conf key=value.CatatanDataWorks memungkinkan Anda mengonfigurasi parameter Spark global di tingkat ruang kerja. Parameter ini digunakan oleh berbagai modul DataWorks. Anda dapat menentukan apakah parameter Spark global memiliki prioritas lebih tinggi daripada parameter Spark yang dikonfigurasi di modul tertentu. Untuk informasi selengkapnya tentang cara mengonfigurasi parameter Spark global, lihat Konfigurasi parameter Spark global.
Hadoop on ECS
Parameter
Deskripsi
queue
Antrian penjadwalan tempat pekerjaan dikirimkan. Default-nya adalah antrian
default. Untuk informasi selengkapnya tentang EMR YARN, lihat Konfigurasi Antrian Dasar.priority
Prioritas pekerjaan. Nilai default: 1.
FLOW_SKIP_SQL_ANALYZE
Mode eksekusi pernyataan SQL. Nilai yang valid:
-
true: Mengeksekusi beberapa pernyataan SQL sekaligus. -
false(default): Mengeksekusi satu pernyataan SQL dalam satu waktu.
CatatanParameter ini hanya berlaku untuk uji coba di lingkungan Data Studio.
USE_GATEWAY
Menentukan apakah pekerjaan dikirimkan melalui kluster gateway. Nilai yang valid:
-
true: Mengirimkan pekerjaan melalui kluster gateway. -
false(default): Tidak mengirimkan pekerjaan melalui kluster gateway. Secara default, pekerjaan dikirimkan ke node header.
CatatanJika kluster yang berisi node ini tidak dikaitkan dengan kluster Gateway, pengiriman pekerjaan EMR berikutnya akan gagal jika Anda secara manual mengatur parameter ini ke
true.Others
Parameter Spark Configuration kustom. Anda dapat menambahkan properti khusus Spark.
Format:
"spark.eventLog.enabled": false. DataWorks secara otomatis menambahkan parameter tersebut ke kode yang dikirimkan ke kluster EMR dalam format--conf key=value. Untuk informasi selengkapnya tentang konfigurasi parameter, lihat Konfigurasi parameter Spark global.Catatan-
DataWorks memungkinkan Anda mengonfigurasi parameter Spark global di tingkat ruang kerja. Parameter ini digunakan oleh berbagai modul DataWorks. Anda dapat menentukan apakah parameter Spark global memiliki prioritas lebih tinggi daripada parameter Spark yang dikonfigurasi di modul tertentu.
-
Untuk mengaktifkan kontrol akses Ranger, tambahkan konfigurasi
spark.hadoop.fs.oss.authorization.method=rangerdi Konfigurasi parameter Spark global.
Jalankan tugas SQL
-
Pada panel Run Configuration, konfigurasikan Compute Resource dan Resource Group.
Catatan-
Anda juga dapat mengonfigurasi CUs for Scheduling berdasarkan sumber daya yang dibutuhkan untuk eksekusi task. CU default adalah
0.25. -
Untuk mengakses sumber data melalui Internet atau virtual private cloud (VPC), Anda harus menggunakan resource group penjadwalan yang dapat terhubung ke sumber data tersebut. Untuk informasi selengkapnya, lihat Solusi konektivitas jaringan.
-
-
Pada kotak dialog parameter di bilah alat, pilih sumber data dan klik Run untuk menjalankan task SQL.
(Opsional) Konfigurasi parameter output
Untuk meneruskan hasil kueri node saat ini ke node downstream, buka bagian Node Context Parameters pada panel Scheduling Settings. Klik Add Assignment Parameter. Ini secara otomatis menambahkan parameter output bernama
outputs, yang nilainya adalah hasil kueri terakhir dalam kode node. Untuk informasi selengkapnya, lihat Konfigurasi dan penggunaan parameter konteks node. -
-
Untuk menjadwalkan task node, konfigurasikan properti penjadwalannya sesuai kebutuhan bisnis Anda. Untuk informasi selengkapnya, lihat Konfigurasi penjadwalan untuk node.
CatatanJika Anda perlu menyesuaikan lingkungan komponen, Anda dapat membuat custom image berdasarkan image resmi
dataworks_emr_base_task_poddan menggunakan image tersebut dalam Pengembangan Data.Misalnya, saat membuat custom image, Anda dapat mengganti paket JAR Spark atau bergantung pada
libraries,files, atauJAR packagestertentu. -
Setelah mengonfigurasi task node, lakukan penerapan. Untuk informasi selengkapnya, lihat Terapkan node atau alur kerja.
-
Setelah penerapan, lihat status task terjadwal di Operation Center. Untuk informasi selengkapnya, lihat Memulai Operation Center.
FAQ
-
Saat Anda menjalankan task node EMR Spark SQL di Data Studio, jika Anda perlu mengirimkan task ke SQL Compute, pastikan status SQL Compute adalah Running. Jika tidak, task akan gagal. Untuk melihat status SQL Compute, lihat Kelola Sesi SQL.