Anda dapat membuat node E-MapReduce (EMR) Spark SQL untuk memproses data terstruktur menggunakan mesin kueri SQL terdistribusi dan meningkatkan efisiensi eksekusi pekerjaan.
Prasyarat
Sebelum mengembangkan node, buat custom image berdasarkan image resmi
dataworks_emr_base_task_poddan gunakan image tersebut di Data Studio untuk menyesuaikan lingkungan komponen.Sebagai contoh, saat membuat custom image, Anda dapat mengganti paket JAR Spark atau menyertakan
libraries,files, atauJAR packagestertentu.Anda telah membuat kluster Alibaba Cloud EMR dan mengaitkannya ke DataWorks. Untuk informasi selengkapnya, lihat Data Studio: Mengaitkan resource komputasi EMR.
(Opsional) Jika Anda adalah pengguna Resource Access Management (RAM), pastikan Anda telah ditambahkan ke ruang kerja untuk pengembangan tugas dan telah diberikan peran Developer atau Workspace Administrator. Peran Workspace Administrator memiliki izin yang luas; berikan peran ini dengan hati-hati. Untuk informasi selengkapnya tentang penambahan anggota, lihat Menambahkan anggota ke ruang kerja.
Jika Anda menggunakan akun Alibaba Cloud, Anda dapat melewati langkah ini.
Jika Anda memerlukan lingkungan pengembangan tertentu untuk tugas Anda, Anda dapat menggunakan fitur custom image yang disediakan oleh DataWorks untuk membangun image komponen kustom guna eksekusi tugas. Untuk informasi selengkapnya, lihat Custom images.
Batasan
Jenis node ini hanya dapat dijalankan pada serverless resource group (disarankan) atau exclusive resource group for scheduling. Untuk menggunakan image di Data Studio, Anda perlu menggunakan serverless resource group.
Untuk mengelola metadata di DataWorks untuk DataLake atau kluster kustom, Anda harus terlebih dahulu mengonfigurasi EMR-HOOK pada kluster tersebut. Untuk informasi selengkapnya, lihat Mengonfigurasi EMR-HOOK untuk Spark SQL.
CatatanJika EMR-HOOK tidak dikonfigurasi pada kluster, DataWorks tidak dapat menampilkan metadata secara real time, menghasilkan log audit, menampilkan alur data, atau melakukan tugas tata kelola data terkait EMR.
Alur data didukung untuk kluster EMR Serverless Spark, tetapi tidak didukung untuk kluster EMR on ACK Spark.
Pendaftaran fungsi visual didukung untuk DataLake dan kluster kustom, tetapi tidak didukung untuk kluster EMR on ACK Spark atau EMR Serverless Spark.
Catatan
Jika Anda mengaktifkan kontrol akses Ranger untuk Spark di kluster EMR yang dikaitkan dengan ruang kerja saat ini:
Fitur ini tersedia secara default saat menjalankan tugas Spark yang menggunakan image default.
Untuk menjalankan tugas Spark yang menggunakan custom image, Anda harus mengajukan tiket untuk meningkatkan image agar mendukung fitur ini.
Prosedur
Pada halaman pengeditan node EMR Spark SQL, lakukan langkah-langkah berikut.
Kembangkan kode SQL
Kembangkan kode tugas Anda di editor SQL. Anda dapat mendefinisikan variabel dalam format
${variable_name}di dalam kode dan memberikan nilai pada bagian Scheduling Parameters pada panel Scheduling Configuration di sebelah kanan. Hal ini memungkinkan pengiriman parameter dinamis untuk eksekusi terjadwal. Untuk informasi selengkapnya tentang penggunaan parameter penjadwalan, lihat Sumber dan ekspresi parameter penjadwalan. Kode berikut menunjukkan contohnya.SHOW TABLES; -- Anda dapat menggunakan ${var} untuk mendefinisikan variabel bernama var. Jika Anda memberikan nilai ${yyyymmdd} ke variabel ini, 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 ); -- Ini dapat digunakan bersama parameter penjadwalan.(Opsional) Konfigurasikan parameter node EMR
Pada panel Run Configuration di sebelah kanan, konfigurasikan parameter pada bagian :
Spark Parameters: Ini adalah properti Spark native. Untuk informasi selengkapnya, lihat Open-source Spark properties. Untuk menyederhanakan konfigurasi dan memastikan konsistensi, Anda dapat langsung memuat Spark configuration template dari Serverless Spark.
DataWorks Parameters: Parameter lanjutan yang tersedia bervariasi tergantung pada jenis kluster EMR. Tabel berikut menjelaskan parameter tersebut.
DataLake dan custom (EMR on ECS)
Parameter
Deskripsi
queue
Antrian penjadwalan untuk mengirim pekerjaan. Antrian default adalah
default. Untuk informasi selengkapnya tentang EMR YARN, lihat Konfigurasi antrian dasar.priority
Prioritas. Nilai default adalah 1.
FLOW_SKIP_SQL_ANALYZE
Metode 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 pengujian di lingkungan Data Studio.
ENABLE_SPARKSQL_JDBC
Metode pengiriman kode SQL. Nilai yang valid:
true: Mengirim kode SQL menggunakan JDBC. Jika kluster EMR tidak memiliki layanan Kyuubi, kode SQL dikirim ke Spark Thrift Server. Jika kluster EMR memiliki layanan Kyuubi, kode SQL dikirim ke Kyuubi melalui JDBC dan mendukung parameter Spark kustom.Kedua metode mendukung alur data untuk metadata. Namun, pekerjaan yang dikirim ke Thrift Server tidak menyediakan informasi output untuk tugas node.
false(Default): Mengirim kode SQL menggunakan mode cluster spark-submit. Dalam mode ini, baik Spark 2 maupun Spark 3 mendukung alur data untuk metadata dan informasi output. Parameter Spark kustom juga didukung.CatatanMode cluster spark-submit membuat file dan direktori sementara di direktori
/tmpHDFS kluster EMR secara default. Anda harus memiliki izin baca dan tulis pada direktori ini.Saat menggunakan mode cluster spark-submit, Anda dapat menambahkan parameter SparkConf kustom dalam konfigurasi lanjutan. DataWorks secara otomatis menambahkan parameter ini ke perintah saat mengirimkan kode. Contoh:
"spark.driver.memory" : "2g".
DATAWORKS_SESSION_DISABLE
Parameter ini berlaku untuk pengujian di lingkungan Data Studio. Nilai yang valid:
true: Membuat koneksi JDBC baru untuk setiap eksekusi pernyataan SQL.false(Default): Menggunakan kembali koneksi JDBC yang sama ketika pengguna menjalankan pernyataan SQL berbeda dalam satu node.
CatatanMengatur parameter ini ke
falsemencegah pencetakanyarn applicationIdHive. Untuk mencetaknya, atur parameter ini ketrue.Other
Parameter Spark Configuration kustom. Anda dapat menambahkan properti khusus Spark.
Format:
spark.eventLog.enabled : false. DataWorks secara otomatis melengkapi perintah dalam format--conf key=valuesaat mengirimkannya ke kluster EMR. Untuk informasi selengkapnya, lihat Menyetel parameter Spark global.CatatanAnda dapat menyetel parameter Spark global di tingkat ruang kerja untuk berbagai modul DataWorks dan menentukan apakah parameter global ini menggantikan parameter spesifik modul.
Untuk mengaktifkan kontrol akses Ranger, tambahkan konfigurasi
spark.hadoop.fs.oss.authorization.method=rangerdi Menyetel parameter Spark global.
EMR Serverless Spark
Untuk informasi selengkapnya tentang pengaturan parameter, lihat Menyetel parameter untuk mengirim pekerjaan Spark.
Parameter
Deskripsi
FLOW_SKIP_SQL_ANALYZE
Metode 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 pengujian di lingkungan Data Studio.
DATAWORKS_SESSION_DISABLE
Metode pengiriman pekerjaan. Saat menjalankan tugas di Data Studio, tugas tersebut dikirim ke SQL Compute secara default. Anda dapat menggunakan parameter ini untuk menentukan apakah tugas dieksekusi oleh SQL Compute atau dikirim ke antrian.
true: Tugas dikirim ke antrian untuk dieksekusi. Secara default, tugas dikirim ke antrian default yang ditentukan saat resource komputasi dikaitkan. Ketika DATAWORKS_SESSION_DISABLE diatur ke true, Anda dapat mengonfigurasi parameterSERVERLESS_QUEUE_NAMEuntuk menentukan antrian pengiriman tugas di Data Studio.false(Default): Tugas dikirim ke SQL Compute untuk dieksekusi.CatatanParameter ini hanya berlaku untuk eksekusi di Data Studio. Tidak berlaku untuk eksekusi terjadwal.
SERVERLESS_RELEASE_VERSION
Versi mesin Spark. Secara default, tugas menggunakan Default Engine Version yang dikonfigurasi untuk kluster di Computing Resources pada Management Center. Anda dapat menyetel parameter ini untuk menentukan versi mesin yang berbeda untuk tugas tertentu.
CatatanParameter
SERVERLESS_RELEASE_VERSIONdalam pengaturan lanjutan hanya berlaku jika SQL Compute (session) untuk kluster terdaftar tidak berada dalam status Running di konsol EMR Serverless Spark.SERVERLESS_QUEUE_NAME
Menentukan antrian sumber daya untuk pengiriman pekerjaan. Saat pekerjaan dikirim ke antrian, pekerjaan tersebut menggunakan Default Resource Queue yang dikonfigurasi untuk kluster di Cluster Management pada Management Center secara default. Anda dapat menambahkan antrian untuk menerapkan isolasi dan manajemen sumber daya. Untuk informasi selengkapnya, lihat Mengelola antrian sumber daya.
Metode konfigurasi:
Setel parameter node untuk menentukan antrian sumber daya.
Gunakan Menyetel parameter Spark global untuk menentukan antrian sumber daya.
CatatanParameter
SERVERLESS_QUEUE_NAMEdalam pengaturan lanjutan hanya berlaku jika SQL Compute (session) untuk kluster terdaftar tidak berada dalam status Running di konsol EMR Serverless Spark.Untuk eksekusi di Data Studio: Anda harus terlebih dahulu menyetel
DATAWORKS_SESSION_DISABLEketrueuntuk mengirim tugas ke antrian. ParameterSERVERLESS_QUEUE_NAMEkemudian berlaku.Untuk eksekusi terjadwal di Operation Center: Tugas selalu dikirim ke antrian dan tidak dapat dikirim ke SQL Compute.
SERVERLESS_SQL_COMPUTE
Menentukan SQL Compute (SQL session). Secara default, tugas menggunakan Default SQL Compute yang dikonfigurasi untuk kluster di Computing Resources pada Management Center. Anda dapat menyetel parameter ini untuk menentukan sesi SQL yang berbeda untuk tugas tertentu. Untuk membuat dan mengelola sesi SQL, lihat Mengelola sesi SQL.
Other
Parameter Spark Configuration kustom. Anda dapat menambahkan properti khusus Spark.
Format:
spark.eventLog.enabled : false. DataWorks secara otomatis melengkapi perintah dalam format--conf key=value.CatatanDataWorks memungkinkan Anda menyetel parameter Spark global di tingkat ruang kerja untuk berbagai modul DataWorks. Anda dapat menentukan apakah parameter global ini menggantikan parameter dalam modul tertentu. Untuk informasi selengkapnya tentang cara menyetel parameter Spark global, lihat Menyetel parameter Spark global.
EMR on ACK
Parameter
Deskripsi
FLOW_SKIP_SQL_ANALYZE
Metode 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 pengujian di lingkungan Data Studio.
Other
Parameter Spark Configuration kustom. Anda dapat menambahkan properti khusus Spark.
Format:
spark.eventLog.enabled : false. DataWorks secara otomatis melengkapi perintah dalam format--conf key=value.CatatanDataWorks memungkinkan Anda menyetel parameter Spark global di tingkat ruang kerja untuk berbagai modul DataWorks. Anda dapat menentukan apakah parameter global ini menggantikan parameter dalam modul tertentu. Untuk informasi selengkapnya tentang cara menyetel parameter Spark global, lihat Menyetel parameter Spark global.
Hadoop (EMR on ECS)
Parameter
Deskripsi
queue
Antrian penjadwalan untuk mengirim pekerjaan. Antrian default adalah
default. Untuk informasi selengkapnya tentang EMR YARN, lihat Konfigurasi antrian dasar.priority
Prioritas. Nilai default adalah 1.
FLOW_SKIP_SQL_ANALYZE
Metode 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 pengujian di lingkungan Data Studio.
USE_GATEWAY
Menentukan apakah pekerjaan untuk node ini dikirim melalui kluster gateway. Nilai yang valid:
true: Mengirim pekerjaan melalui kluster gateway.false(Default): Mengirim pekerjaan ke node header, bukan ke kluster gateway.
CatatanJika kluster untuk node ini tidak dikaitkan dengan kluster gateway, mengatur parameter ini ke
trueakan menyebabkan pengiriman pekerjaan EMR berikutnya gagal.Other
Parameter Spark Configuration kustom. Anda dapat menambahkan properti khusus Spark.
Format:
spark.eventLog.enabled : false. DataWorks secara otomatis melengkapi perintah dalam format--conf key=value. Untuk informasi selengkapnya, lihat Menyetel parameter Spark global.CatatanDataWorks memungkinkan Anda menyetel parameter Spark global di tingkat ruang kerja untuk berbagai modul DataWorks. Anda dapat menentukan apakah parameter global ini menggantikan parameter dalam modul tertentu.
Untuk mengaktifkan kontrol akses Ranger, tambahkan konfigurasi
spark.hadoop.fs.oss.authorization.method=rangerdi Menyetel parameter Spark global untuk memastikan kontrol akses Ranger berlaku.
Eksekusi tugas SQL
Pada panel Run Configuration, pilih Computing Resource dan Resource Group.
CatatanAnda juga dapat menyetel Schedule CUs sesuai kebutuhan sumber daya tugas. Nilai default adalah
0.25.Untuk mengakses sumber data di jaringan publik atau VPC, gunakan resource group penjadwalan yang telah lulus uji konektivitas dengan sumber data tersebut. Untuk informasi selengkapnya, lihat Solusi konektivitas jaringan.
Pada kotak dialog parameter di toolbar, pilih sumber data dan klik Run untuk mengeksekusi tugas SQL.
Untuk menjalankan node sesuai jadwal, konfigurasikan properti penjadwalannya sesuai kebutuhan bisnis Anda. Untuk informasi selengkapnya, lihat Mengonfigurasi penjadwalan untuk node.
CatatanUntuk menyesuaikan lingkungan komponen, Anda dapat membuat custom image berdasarkan image resmi
dataworks_emr_base_task_poddan menggunakan image tersebut di Data Studio.Sebagai contoh, saat membuat custom image, Anda dapat mengganti paket JAR Spark atau menyertakan
libraries,files, atauJAR packagestertentu.Setelah mengonfigurasi node, Anda harus mempublikasikannya. Untuk informasi selengkapnya, lihat Mempublikasikan node atau workflow.
Setelah tugas dipublikasikan, Anda dapat melihat status penjadwalannya di Operation Center. Untuk informasi selengkapnya, lihat Memulai Operation Center.
FAQ
Saat menjalankan tugas node EMR Spark SQL di Data Studio yang memerlukan SQL Compute, pastikan instans SQL Compute berada dalam status Running untuk menghindari kegagalan tugas. Untuk melihat status SQL Compute, lihat Mengelola sesi SQL.