Topik ini menjelaskan cara mengembangkan pekerjaan Spark menggunakan antarmuka baris perintah (CLI) spark-submit EMR Serverless. Contoh berikut menggunakan instance ECS yang terhubung ke EMR Serverless Spark.
Prasyarat
Java 1.8 atau versi yang lebih baru telah diinstal.
Jika Anda menggunakan Pengguna RAM untuk mengirim pekerjaan Spark, tambahkan Pengguna RAM tersebut ke ruang kerja Serverless Spark dan berikan peran Developer atau peran dengan tingkat otorisasi yang lebih tinggi. Untuk informasi selengkapnya, lihat Mengelola pengguna dan peran.
Prosedur
Langkah 1: Unduh dan instal alat spark-submit EMR Serverless
Klik emr-serverless-spark-tool-0.11.3-SNAPSHOT-bin.zip untuk mengunduh paket instalasi.
Unggah paket instalasi ke instance ECS. Untuk informasi selengkapnya, lihat Mengunggah atau mengunduh file.
Jalankan perintah berikut untuk mengekstrak dan menginstal alat spark-submit EMR Serverless.
unzip emr-serverless-spark-tool-0.11.3-SNAPSHOT-bin.zip
Langkah 2: Konfigurasikan parameter
Jika variabel lingkungan SPARK_CONF_DIR telah ditetapkan di lingkungan Spark Anda, tempatkan file konfigurasi di direktori yang ditentukan oleh SPARK_CONF_DIR. Jika tidak, akan terjadi kesalahan. Sebagai contoh, dalam kluster EMR, direktori ini biasanya /etc/taihao-apps/spark-conf.
Jalankan perintah berikut untuk memodifikasi konfigurasi dalam
connection.properties.vim emr-serverless-spark-tool-0.11.3-SNAPSHOT/conf/connection.propertiesKonfigurasikan parameter dalam file tersebut. Format parameternya adalah
key=value. Kode berikut menunjukkan contohnya.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-xxxxxxxxxxxxPentingPengguna RAM atau peran yang sesuai dengan AccessKey ini harus diberikan otorisasi RAM dan ditambahkan ke ruang kerja Serverless Spark.
Untuk informasi selengkapnya tentang otorisasi RAM, lihat Memberikan izin kepada Pengguna RAM.
Untuk informasi selengkapnya tentang pengelolaan pengguna dan peran dalam ruang kerja Serverless Spark, lihat Mengelola pengguna dan peran.
Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Wajib
Deskripsi
accessKeyId
Ya
ID AccessKey dan Rahasia AccessKey dari Akun Alibaba Cloud atau Pengguna RAM yang Anda gunakan untuk menjalankan pekerjaan Spark.
PentingSaat Anda mengonfigurasi parameter
accessKeyIddanaccessKeySecret, pastikan pengguna yang sesuai dengan AccessKey tersebut memiliki izin baca dan tulis pada bucket Object Storage Service (OSS) yang dilampirkan ke ruang kerja. Untuk melihat bucket OSS yang dilampirkan ke ruang kerja, buka halaman Spark dan klik Details di kolom Tindakan ruang kerja tersebut.accessKeySecret
Ya
regionId
Ya
ID wilayah. Topik ini menggunakan wilayah Tiongkok (Hangzhou) sebagai contoh.
endpoint
Ya
Titik akhir EMR Serverless Spark. Untuk informasi selengkapnya, lihat Titik akhir layanan.
Topik ini menggunakan titik akhir publik wilayah Tiongkok (Hangzhou) sebagai contoh. Parameter ini diatur ke
emr-serverless-spark.cn-hangzhou.aliyuncs.com.CatatanJika instance ECS 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 spark-submit EMR Serverless.
cd emr-serverless-spark-tool-0.11.3-SNAPSHOTPilih metode pengiriman berdasarkan jenis pekerjaan.
Saat mengirim pekerjaan, Anda harus menentukan sumber daya dependensi, seperti paket JAR atau skrip Python. File-file ini dapat disimpan di OSS atau pada disk lokal. Lokasi penyimpanan tergantung pada kasus penggunaan dan persyaratan Anda. Contoh dalam topik ini menggunakan sumber daya yang disimpan di OSS.
Menggunakan spark-submit
spark-submitadalah alat pengiriman pekerjaan umum yang disediakan oleh Spark. Alat ini cocok untuk pekerjaan Java, Scala, dan PySpark.Pekerjaan Java/Scala
Contoh ini menggunakan spark-examples_2.12-3.3.1.jar, yaitu contoh sederhana yang disertakan dengan Spark untuk menghitung nilai Pi (π). Anda dapat mengklik spark-examples_2.12-3.3.1.jar untuk mengunduh paket JAR uji dan mengunggahnya ke OSS.
./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.3.1.jar \ 10000Pekerjaan PySpark
Contoh ini menggunakan DataFrame.py dan employee.csv. Anda dapat mengklik DataFrame.py dan employee.csv untuk mengunduh file uji dan mengunggahnya 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.csvBagian berikut menjelaskan parameter-parameter tersebut:
Parameter open-source yang kompatibel
Parameter
Nilai contoh
Deskripsi
--name
SparkPi
Nama aplikasi Spark. Parameter ini digunakan untuk mengidentifikasi pekerjaan.
--class
org.apache.spark.examples.SparkPi
Nama kelas entri pekerjaan Spark untuk program Java atau Scala. Parameter ini tidak diperlukan untuk program Python.
--num-executors
5
Jumlah pelaksana untuk pekerjaan Spark.
--driver-cores
1
Jumlah core driver untuk pekerjaan Spark.
--driver-memory
1g
Ukuran memori driver untuk pekerjaan Spark.
--executor-cores
2
Jumlah core pelaksana untuk pekerjaan Spark.
--executor-memory
2g
Ukuran memori pelaksana untuk pekerjaan Spark.
--files
oss://<yourBucket>/file1,oss://<yourBucket>/file2
File sumber daya yang dirujuk oleh pekerjaan Spark. File-file tersebut 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. Skrip-skrip tersebut dapat berupa sumber daya OSS atau file lokal. Pisahkan beberapa file dengan koma (,). Parameter ini hanya berlaku untuk program PySpark.
--jars
oss://<yourBucket>/file1.jar,oss://<yourBucket>/file2.jar
Paket JAR yang dirujuk oleh pekerjaan Spark. Paket-paket tersebut 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. Paket-paket tersebut dapat berupa sumber daya OSS atau file lokal. Pisahkan beberapa file dengan koma (,).
--queue
root_queue
Nama antrian tempat pekerjaan Spark dijalankan. Nama tersebut harus sama dengan nama antrian di bagian manajemen antrian ruang kerja EMR Serverless Spark.
--proxy-user
test
Nilai parameter ini akan menimpa variabel lingkungan
HADOOP_USER_NAME. Perilakunya sama seperti pada versi open-source.--conf
spark.tags.key=value
Parameter kustom untuk pekerjaan Spark.
--status
jr-8598aa9f459d****
Menampilkan status pekerjaan Spark.
--kill
jr-8598aa9f459d****
Menghentikan pekerjaan Spark.
Parameter yang ditingkatkan
Parameter
Nilai contoh
Deskripsi
--detach
Tidak perlu nilai
Jika Anda menggunakan parameter ini, spark-submit langsung keluar setelah mengirim pekerjaan dan tidak menunggu atau menanyakan status pekerjaan.
--detail
jr-8598aa9f459d****
Menampilkan detail pekerjaan Spark.
--release-version
esr-4.1.1 (Spark 3.5.2, Scala 2.12)
Versi Spark. Masukkan versi mesin database yang ditampilkan di Konsol.
--enable-template
Tidak perlu nilai
Mengaktifkan fitur templat. Pekerjaan menggunakan templat konfigurasi default ruang kerja.
Jika Anda membuat Configuration Template di Configuration Management, Anda dapat menentukan ID templat dengan mengatur parameter
spark.emr.serverless.templateIddalam--conf. Pekerjaan kemudian langsung menerapkan templat yang ditentukan. Untuk informasi selengkapnya tentang cara membuat templat, lihat Manajemen konfigurasi.Jika Anda hanya menentukan
--enable-template, pekerjaan secara otomatis menerapkan templat konfigurasi default ruang kerja.Jika Anda hanya menentukan ID templat menggunakan
--conf, pekerjaan langsung menerapkan templat yang ditentukan.Jika Anda menentukan keduanya, yaitu
--enable-templatedan--conf, serta parameter--enable-templatedan--conf spark.emr.serverless.templateIdditentukan, maka ID templat dalam--confakan menimpa templat default.Jika Anda tidak menentukan
--enable-templateatau--conf spark.emr.serverless.templateId, pekerjaan tidak menerapkan konfigurasi templat apa pun.
--timeout
60
Periode waktu habis pekerjaan. Satuan: detik.
--workspace-id
w-4b4d7925a797****
Menentukan ID ruang kerja pada tingkat pekerjaan. Ini dapat 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
Menggunakan spark-sql
spark-sqladalah alat yang digunakan untuk menjalankan kueri atau skrip SQL. Alat ini 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. Anda dapat mengklik example.sql untuk mengunduh file uji dan mengunggahnya ke OSS.
Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Nilai contoh
Deskripsi
-e "<sql>"-e "SELECT * FROM table"Menjalankan pernyataan SQL langsung dari baris perintah.
-f <path>-f oss://path/script.sqlMenjalankan file skrip SQL di path yang ditentukan.
Langkah 4: Kueri pekerjaan Spark
Menggunakan 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****>Menggunakan UI
Pada halaman EMR Serverless Spark, klik Job History di panel navigasi sebelah kiri.
Pada tab Development Jobs di halaman Job History, Anda dapat 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 sedang Berjalan.
Pertanyaan Umum
Bagaimana cara menentukan konektivitas jaringan saat saya mengirim pekerjaan batch menggunakan alat spark-submit?
Persiapkan koneksi jaringan. Untuk informasi selengkapnya, lihat Menambahkan koneksi jaringan.
Dalam perintah spark-submit, gunakan
--confuntuk menentukan koneksi jaringan.--conf spark.emr.serverless.network.service.name=<networkname>Ganti <networkname> dengan nama koneksi jaringan Anda.