Topik ini menjelaskan cara menggunakan EMR Serverless spark-submit command-line interface (CLI) untuk mengembangkan pekerjaan Spark dengan menghubungkan instance ECS ke EMR Serverless Spark.
Prasyarat
Java 1.8 atau versi yang lebih baru harus diinstal.
Jika Anda menggunakan RAM user untuk mengirim pekerjaan Spark, tambahkan RAM user tersebut ke ruang kerja Serverless Spark dan berikan role Developer atau yang lebih tinggi. Untuk informasi selengkapnya, lihat Manage users and roles.
Prosedur
Langkah 1: Unduh dan instal EMR Serverless spark-submit CLI
Klik emr-serverless-spark-tool-0.11.3-SNAPSHOT-bin.zip untuk mengunduh paket instalasi.
Unggah paket instalasi ke instance ECS Anda. Untuk informasi selengkapnya, lihat Upload or download files.
Jalankan perintah berikut untuk mengekstrak dan menginstal EMR Serverless spark-submit CLI:
unzip emr-serverless-spark-tool-0.11.3-SNAPSHOT-bin.zip
Langkah 2: Konfigurasikan parameter
Dalam lingkungan yang mendukung Spark, jika variabel lingkungan SPARK_CONF_DIR telah ditetapkan, letakkan file konfigurasi di direktori yang ditentukan oleh SPARK_CONF_DIR. Sebagai contoh, dalam kluster EMR, direktori ini biasanya adalah /etc/taihao-apps/spark-conf. Jika tidak, sistem akan mengembalikan error.
Jalankan perintah berikut untuk mengubah konfigurasi dalam
connection.properties:vim emr-serverless-spark-tool-0.11.3-SNAPSHOT/conf/connection.propertiesKonfigurasikan file tersebut dengan format
key=value. Contoh:accessKeyId=<ALIBABA_CLOUD_ACCESS_KEY_ID> accessKeySecret=<ALIBABA_CLOUD_ACCESS_KEY_SECRET> regionId=cn-hangzhou endpoint=emr-serverless-spark.cn-hangzhou.aliyuncs.com workspaceId=w-xxxxxxxxxxxxPentingRAM user atau role yang terkait dengan AccessKey ini harus diberikan otorisasi RAM dan ditambahkan ke ruang kerja Serverless Spark yang sesuai.
Untuk otorisasi RAM, lihat RAM user authorization.
Untuk pengelolaan pengguna dan role di ruang kerja Serverless Spark, lihat Manage users and roles.
Tabel berikut menjelaskan parameter-parameter tersebut:
Parameter
Wajib
Deskripsi
accessKeyId
Ya
ID AccessKey dan Rahasia AccessKey dari Akun Alibaba Cloud atau RAM user yang digunakan untuk menjalankan pekerjaan Spark.
PentingSaat mengonfigurasi parameter
accessKeyIddanaccessKeySecret, pastikan pengguna yang terkait dengan AccessKey tersebut memiliki izin baca dan tulis pada Bucket OSS yang terikat ke ruang kerja. Untuk melihat Bucket OSS yang terikat ke ruang kerja, buka halaman Spark dan klik Details di kolom Actions.accessKeySecret
Ya
regionId
Ya
ID wilayah. Contoh ini menggunakan wilayah China (Hangzhou).
endpoint
Ya
Titik akhir EMR Serverless Spark. Untuk informasi selengkapnya tentang titik akhir, lihat Service endpoints.
Contoh ini menggunakan titik akhir publik untuk wilayah China (Hangzhou). Nilai parameternya adalah
emr-serverless-spark.cn-hangzhou.aliyuncs.com.CatatanJika instance ECS Anda tidak dapat mengakses jaringan publik, gunakan titik akhir VPC.
workspaceId
Ya
ID ruang kerja EMR Serverless Spark.
Langkah 3: Kirim pekerjaan Spark
Jalankan perintah berikut untuk masuk ke direktori alat EMR Serverless spark-submit:
cd emr-serverless-spark-tool-0.11.3-SNAPSHOTPilih metode pengiriman berdasarkan jenis pekerjaan Anda.
Saat mengirim pekerjaan, tentukan sumber daya file yang dibutuhkan, seperti paket JAR atau skrip Python. Sumber daya ini dapat disimpan di OSS atau secara lokal, tergantung pada skenario dan kebutuhan Anda. Topik ini menggunakan sumber daya OSS sebagai contoh.
Gunakan spark-submit
spark-submitadalah alat pengiriman pekerjaan umum Spark yang berfungsi untuk pekerjaan Java/Scala dan PySpark.Pekerjaan Java atau Scala
Contoh ini menggunakan spark-examples_2.12-3.5.2.jar. Klik spark-examples_2.12-3.5.2.jar untuk mengunduh paket JAR uji, lalu unggah ke OSS. Paket JAR ini merupakan contoh bawaan Spark yang menghitung nilai Pi (π).
CatatanAnda harus menggunakan spark-examples_2.12-3.5.2.jar dengan versi engine esr-4.x. Jika Anda menggunakan versi engine esr-5.x, unduh spark-examples_2.13-4.0.1.jar untuk validasi dalam topik ini.
./bin/spark-submit --name SparkPi \ --queue dev_queue \ --num-executors 5 \ --driver-memory 1g \ --executor-cores 2 \ --executor-memory 2g \ --class org.apache.spark.examples.SparkPi \ oss://<yourBucket>/path/to/spark-examples_2.12-3.5.2.jar \ 10000Pekerjaan PySpark
Contoh ini menggunakan DataFrame.py dan employee.csv. Klik DataFrame.py dan employee.csv untuk mengunduh file uji, lalu unggah ke OSS.
CatatanFile DataFrame.py berisi kode yang menggunakan framework Apache Spark untuk memproses data di OSS.
File employee.csv berisi daftar data, termasuk nama karyawan, departemen, dan gaji.
./bin/spark-submit --name PySpark \ --queue dev_queue \ --num-executors 5 \ --driver-memory 1g \ --executor-cores 2 \ --executor-memory 2g \ --conf spark.tags.key=value \ oss://<yourBucket>/path/to/DataFrame.py \ oss://<yourBucket>/path/to/employee.csvPenjelasan parameter sebagai berikut:
Parameter open source yang didukung
Nama Parameter
Contoh
Deskripsi
--name
SparkPi
Menentukan nama aplikasi pekerjaan Spark untuk identifikasi.
--class
org.apache.spark.examples.SparkPi
Menentukan nama kelas entri untuk program Java atau Scala. Jangan gunakan parameter ini untuk program Python.
--num-executors
5
Jumlah executor untuk pekerjaan Spark.
--driver-cores
1
Jumlah core CPU yang dialokasikan untuk driver Spark.
--driver-memory
1g
Jumlah memori yang dialokasikan untuk driver Spark.
--executor-cores
2
Jumlah core CPU yang dialokasikan untuk setiap executor.
--executor-memory
2g
Jumlah memori yang dialokasikan untuk setiap executor.
--files
oss://<yourBucket>/file1,oss://<yourBucket>/file2
File sumber daya yang dirujuk oleh pekerjaan Spark. File ini dapat berupa sumber daya OSS atau file lokal. Pisahkan beberapa file dengan koma (,).
--py-files
oss://<yourBucket>/file1.py,oss://<yourBucket>/file2.py
Skrip Python yang dirujuk oleh pekerjaan Spark. File ini dapat berupa sumber daya OSS atau file lokal. Pisahkan beberapa file dengan koma (,). Parameter ini hanya berlaku untuk pekerjaan PySpark.
--jars
oss://<yourBucket>/file1.jar,oss://<yourBucket>/file2.jar
Paket JAR yang dirujuk oleh pekerjaan Spark. File ini dapat berupa sumber daya OSS atau file lokal. Pisahkan beberapa file dengan koma (,).
--archives
oss://<yourBucket>/archive.tar.gz#env,oss://<yourBucket>/archive2.zip
Paket arsip yang dirujuk oleh pekerjaan Spark. File ini dapat berupa sumber daya OSS atau file lokal. Pisahkan beberapa file dengan koma (,).
--queue
root_queue
Antrian tempat pekerjaan Spark dijalankan. Nama antrian harus sesuai dengan yang dikonfigurasi dalam manajemen antrian ruang kerja EMR Serverless Spark.
--proxy-user
test
Nilai yang ditentukan akan menimpa variabel lingkungan
HADOOP_USER_NAME. Perilaku ini sesuai dengan versi open source.--conf
spark.tags.key=value
Parameter kustom untuk pekerjaan Spark.
--status
jr-8598aa9f459d****
Memeriksa status pekerjaan Spark.
--kill
jr-8598aa9f459d****
Menghentikan pekerjaan Spark.
Parameter non-open-source yang ditingkatkan
Nama Parameter
Contoh
Deskripsi
--detach
N/A
Setelah pekerjaan dikirim, spark-submit langsung keluar tanpa menunggu atau memeriksa status pekerjaan.
--detail
jr-8598aa9f459d****
Menampilkan detail pekerjaan Spark.
--release-version
esr-4.1.1 (Spark 3.5.2, Scala 2.12)
Menentukan versi Spark. Gunakan versi engine yang ditampilkan di Konsol.
--enable-template
N/A
Mengaktifkan fitur templat. Pekerjaan akan menggunakan templat konfigurasi default ruang kerja.
Jika Anda membuat configuration template di Configuration Management, tentukan ID templat dengan mengatur parameter
spark.emr.serverless.templateIddalam--conf. Pekerjaan akan langsung menerapkan ID templat yang ditentukan. Untuk informasi selengkapnya tentang pembuatan templat, lihat Configuration management.Jika Anda hanya menentukan
--enable-template, pekerjaan secara otomatis menerapkan templat konfigurasi default ruang kerja.Jika Anda hanya menentukan ID templat dalam
--conf, pekerjaan langsung menerapkan ID templat yang ditentukan.Menentukan kedua parameter
--enable-templatedan--conf: Jika Anda menentukan keduanya, yaitu--enable-templatedan--conf spark.emr.serverless.templateId, maka ID templat dalam--confakan menimpa templat default.Tidak ada parameter yang ditentukan: Jika Anda tidak menentukan
--enable-templatemaupun--conf spark.emr.serverless.templateId, pekerjaan tidak menerapkan konfigurasi templat apa pun.
--timeout
60
Periode timeout pekerjaan, dalam detik.
--workspace-id
w-4b4d7925a797****
Menentukan ID ruang kerja pada level pekerjaan. Ini akan menimpa parameter
workspaceIddalam fileconnection.properties.Parameter open source yang tidak didukung
--deploy-mode
--master
--repositories
--keytab
--principal
--total-executor-cores
--driver-library-path
--driver-class-path
--supervise
--verbose
Gunakan spark-sql
spark-sqladalah alat yang dirancang khusus untuk menjalankan query atau skrip SQL, cocok untuk skenario di mana Anda menjalankan pernyataan SQL secara langsung.Contoh 1: Jalankan pernyataan SQL secara langsung
spark-sql -e "SHOW TABLES"Perintah ini mencantumkan semua tabel dalam database saat ini.
Contoh 2: Jalankan file skrip SQL
spark-sql -f oss://<yourBucketname>/path/to/your/example.sqlContoh ini menggunakan example.sql. Klik example.sql untuk mengunduh file uji, lalu unggah ke OSS.
Tabel berikut menjelaskan parameter-parameter tersebut:
Nama Parameter
Contoh
Deskripsi
-e "<sql>"-e "SELECT * FROM table"Menjalankan pernyataan SQL secara inline di baris perintah.
-f <path>-f oss://path/script.sqlMenjalankan file skrip SQL di path yang ditentukan.
Langkah 4: Kueri pekerjaan Spark
Gunakan CLI
Kueri status pekerjaan Spark
cd emr-serverless-spark-tool-0.11.3-SNAPSHOT
./bin/spark-submit --status <jr-8598aa9f459d****>Kueri detail pekerjaan Spark
cd emr-serverless-spark-tool-0.11.3-SNAPSHOT
./bin/spark-submit --detail <jr-8598aa9f459d****>Metode UI
Pada halaman EMR Serverless Spark, klik Job History di panel navigasi sebelah kiri.
Pada halaman Job History, klik tab Development Jobs untuk melihat pekerjaan yang telah dikirim.

(Opsional) Langkah 5: Hentikan pekerjaan Spark
cd emr-serverless-spark-tool-0.11.3-SNAPSHOT
./bin/spark-submit --kill <jr-8598aa9f459d****>Anda hanya dapat menghentikan pekerjaan yang berstatus Running.
FAQ
Bagaimana cara menentukan konektivitas jaringan saat mengirim pekerjaan batch menggunakan tool spark-submit?
Persiapkan koneksi jaringan terlebih dahulu. Untuk informasi selengkapnya, lihat Add a network connection.
Tentukan koneksi jaringan dalam perintah spark-submit menggunakan
--conf:--conf spark.emr.serverless.network.service.name=<networkname>Ganti <networkname> dengan nama koneksi aktual Anda.