Topik ini menjelaskan cara mengirim pekerjaan Spark dengan alat baris perintah spark-submit EMR Serverless Spark. Contoh ini menggunakan instance ECS untuk terhubung ke EMR Serverless Spark.
Prasyarat
-
Java Development Kit (JDK) 1.8 atau versi yang lebih baru telah diinstal.
-
Jika Anda menggunakan RAM user untuk mengirim pekerjaan Spark, Anda harus menambahkan RAM user tersebut ke ruang kerja EMR Serverless Spark dan memberikan role developer atau lebih tinggi. Untuk informasi selengkapnya, lihat Manage users and roles.
Prosedur
Langkah 1: Unduh dan instal tool spark-submit EMR Serverless
-
Klik emr-serverless-spark-tool-1.16.0-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 alat spark-submit EMR Serverless.
unzip emr-serverless-spark-tool-1.16.0-bin.zip
Langkah 2: Konfigurasikan parameter
Pada lingkungan tempat Spark diinstal, jika variabel lingkungan SPARK_CONF_DIR telah ditetapkan, Anda harus meletakkan file konfigurasi di direktori yang ditentukan oleh SPARK_CONF_DIR. Misalnya, pada kluster EMR, direktori ini biasanya /etc/taihao-apps/spark-conf. Jika tidak, sistem akan melaporkan error.
-
Jalankan perintah berikut untuk mengubah konfigurasi dalam file
connection.properties.vim emr-serverless-spark-tool-1.16.0/conf/connection.properties -
Kami merekomendasikan agar Anda mengonfigurasi file seperti pada contoh berikut, dengan parameter dalam format
key=value.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 untuk AccessKey ini harus memiliki otorisasi di RAM dan ditambahkan ke ruang kerja EMR Serverless Spark.
-
Untuk otorisasi RAM, lihat Grant permissions to a RAM user.
-
Untuk manajemen user dan role di ruang kerja EMR Serverless Spark, lihat Manage users and roles.
Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Wajib
Deskripsi
accessKeyId
Ya
ID AccessKey dan AccessKey Secret dari akun Alibaba Cloud atau RAM user yang menjalankan pekerjaan Spark.
PentingSaat Anda mengonfigurasi parameter
accessKeyIddanaccessKeySecret, pastikan user yang terkait dengan AccessKey tersebut memiliki izin baca dan tulis untuk Bucket OSS yang terikat ke ruang kerja. Anda dapat melihat Bucket OSS yang terikat ke ruang kerja di halaman Spark dengan mengklik Details pada kolom Actions ruang kerja tersebut.accessKeySecret
Ya
regionId
Ya
ID wilayah. Contoh ini menggunakan wilayah China (Hangzhou).
endpoint
Ya
Titik akhir EMR Serverless Spark. Untuk informasi selengkapnya, lihat 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 memiliki akses internet, Anda harus menggunakan titik akhir VPC.
workspaceId
Ya
ID ruang kerja EMR Serverless Spark.
-
Langkah 3: Kirim pekerjaan Spark
-
Jalankan perintah berikut untuk masuk ke direktori alat spark-submit EMR Serverless.
cd emr-serverless-spark-tool-1.16.0 -
Pilih metode pengiriman berdasarkan jenis pekerjaan Anda.
Saat mengirim pekerjaan, Anda harus menentukan file sumber daya yang dibutuhkan pekerjaan tersebut, seperti paket JAR atau skrip Python. Anda dapat menyimpan sumber daya ini di OSS atau secara lokal. Topik ini menggunakan sumber daya OSS pada semua contoh.
spark-submit
spark-submitadalah alat pengiriman tugas umum yang disediakan oleh Spark untuk tugas Java/Scala dan PySpark.Pekerjaan Java/Scala
Contoh ini menggunakan spark-examples_2.12-3.5.2.jar. Anda dapat mengklik spark-examples_2.12-3.5.2.jar untuk mengunduh paket JAR uji coba, lalu mengunggahnya ke OSS. Paket JAR ini merupakan contoh sederhana bawaan Spark yang menghitung nilai pi (π).
CatatanFile
spark-examples_2.12-3.5.2.jarharus digunakan dengan versi engine esr-4.x untuk mengirim pekerjaan. Jika Anda menggunakan versi engine esr-5.x, unduh spark-examples_2.13-4.0.1.jar untuk contoh 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. Anda dapat mengklik DataFrame.py dan employee.csv untuk mengunduh file uji coba, lalu mengunggahnya ke OSS.
Catatan-
DataFrame.py adalah potongan kode yang menggunakan framework Apache Spark untuk memproses data di OSS.
-
employee.csv adalah file data yang berisi 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.csvParameter-parameter tersebut dijelaskan di bawah ini.
-
Parameter open source yang didukung
Parameter
Contoh
Deskripsi
--name
SparkPi
Nama aplikasi untuk pekerjaan Spark.
--class
org.apache.spark.examples.SparkPi
Kelas entri untuk pekerjaan Spark. Parameter ini wajib untuk aplikasi Java atau Scala, tetapi tidak diperlukan untuk aplikasi Python.
--num-executors
5
Jumlah executor untuk pekerjaan Spark.
--driver-cores
1
Jumlah core driver untuk pekerjaan Spark.
--driver-memory
1g
Jumlah memori driver untuk pekerjaan Spark.
--executor-cores
2
Jumlah core executor untuk pekerjaan Spark.
--executor-memory
2g
Jumlah memori executor untuk pekerjaan Spark.
--files
oss://<yourBucket>/file1,oss://<yourBucket>/file2
File resource yang dibutuhkan oleh pekerjaan Spark. File dapat disimpan di OSS atau secara lokal. Pisahkan beberapa file dengan koma (,).
--py-files
oss://<yourBucket>/file1.py,oss://<yourBucket>/file2.py
Skrip Python yang dibutuhkan oleh pekerjaan Spark. Skrip dapat disimpan di OSS atau secara lokal. Pisahkan beberapa file dengan koma (,). Parameter ini hanya untuk aplikasi PySpark.
--jars
oss://<yourBucket>/file1.jar,oss://<yourBucket>/file2.jar
Paket JAR yang dibutuhkan oleh pekerjaan Spark. Resource dapat disimpan di OSS atau secara lokal. Pisahkan beberapa file dengan koma (,).
--archives
oss://<yourBucket>/archive.tar.gz#env,oss://<yourBucket>/archive2.zip
File arsip yang dibutuhkan oleh pekerjaan Spark. Resource dapat disimpan di OSS atau secara lokal. Pisahkan beberapa file dengan koma (,).
--queue
root_queue
Nama antrian tempat pekerjaan Spark dijalankan. Nama ini harus sesuai dengan nama antrian di bagian manajemen antrian ruang kerja EMR Serverless Spark Anda.
--proxy-user
test
Nilai yang ditetapkan akan menggantikan variabel lingkungan
HADOOP_USER_NAME, dan perilakunya konsisten 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 tambahan
Parameter
Contoh
Deskripsi
--detach
Tidak memerlukan nilai
Menyebabkan
spark-submitlangsung keluar setelah mengirim pekerjaan, tanpa menunggu 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. Masukkan nomor versi engine yang ditampilkan di Konsol.
--enable-template
Tidak memerlukan nilai
Mengaktifkan fitur templat. Pekerjaan kemudian akan menggunakan templat konfigurasi default ruang kerja.
Jika Anda membuat Configurations di Configuration management, Anda dapat menentukan ID-nya dengan menambahkan
spark.emr.serverless.templateIdke parameter--conf. Pekerjaan kemudian langsung menerapkan templat yang ditentukan. Untuk informasi selengkapnya tentang pembuatan templat, lihat Configuration management.-
Jika Anda hanya menentukan
--enable-template, tugas secara otomatis menerapkan templat konfigurasi default ruang kerja. -
Gunakan hanya
--confuntuk menentukan ID templat: Tugas langsung menerapkan ID templat yang ditentukan. -
Menentukan keduanya
--enable-templatedan--conf: Jika Anda menentukan keduanya--enable-templatedan--conf spark.emr.serverless.templateId, ID templat dalam--confakan menggantikan templat default. -
Tidak ada parameter yang ditentukan: Jika Anda tidak menggunakan
--enable-templateatau menentukan--conf spark.emr.serverless.templateId, pekerjaan tidak akan menerapkan konfigurasi templat apa pun.
--timeout
60
Periode timeout untuk pekerjaan, dalam detik.
--workspace-id
w-4b4d7925a797****
Menentukan ID ruang kerja pada level pekerjaan. Ini menggantikan 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
-
spark-sql
spark-sqladalah alat khusus untuk menjalankan query atau skrip SQL secara langsung.-
Contoh 1: Jalankan pernyataan SQL secara langsung
spark-sql -e "SHOW TABLES"Perintah ini menampilkan semua tabel di database saat ini.
-
Contoh 2: Jalankan file skrip SQL
spark-sql -f oss://<yourBucketname>/path/to/your/example.sqlContoh ini menggunakan example.sql. Anda dapat mengklik example.sql untuk mengunduh file uji coba lalu mengunggahnya ke OSS.
Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Contoh
Deskripsi
-e "<sql>"-e "SELECT * FROM table"Menjalankan pernyataan SQL inline dari command line.
-f <path>-f oss://path/script.sqlMenjalankan file skrip SQL dari path yang ditentukan.
-
Langkah 4: Kueri pekerjaan Spark
CLI
Kueri status pekerjaan
cd emr-serverless-spark-tool-1.16.0
./bin/spark-submit --status <jr-8598aa9f459d****>
Kueri detail pekerjaan
cd emr-serverless-spark-tool-1.16.0
./bin/spark-submit --detail <jr-8598aa9f459d****>
UI
-
Di halaman EMR Serverless Spark, klik Job History di panel navigasi sebelah kiri.
-
Di halaman Job History, pada tab Development Job Runs, Anda dapat melihat pekerjaan yang telah dikirim.
Daftar pekerjaan mencakup kolom Job name/Job run ID, Status, Tags, Submission time, dan Actions. Di kolom Actions, Anda dapat mengklik Stop, Details, atau Spark UI.
(Opsional) Langkah 5: Hentikan pekerjaan Spark
cd emr-serverless-spark-tool-1.16.0
./bin/spark-submit --kill <jr-8598aa9f459d****>
Anda hanya dapat menghentikan pekerjaan yang berada dalam status running.
FAQ
Bagaimana cara menentukan koneksi jaringan saat mengirim pekerjaan batch dengan alat spark-submit?
-
Buat koneksi jaringan. Untuk informasi selengkapnya, lihat Add a network connection.
-
Dalam perintah spark-submit, gunakan
--confuntuk menentukan koneksi jaringan.--conf spark.emr.serverless.network.service.name=<networkname>Ganti <networkname> dengan nama koneksi jaringan Anda.