全部产品
Search
文档中心

E-MapReduce:Kirim pekerjaan Spark menggunakan antarmuka baris perintah (CLI) spark-submit

更新时间:Feb 12, 2026

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

  1. Klik emr-serverless-spark-tool-0.11.3-SNAPSHOT-bin.zip untuk mengunduh paket instalasi.

  2. Unggah paket instalasi ke instance ECS Anda. Untuk informasi selengkapnya, lihat Upload or download files.

  3. 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

Penting

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.

  1. Jalankan perintah berikut untuk mengubah konfigurasi dalam connection.properties:

    vim emr-serverless-spark-tool-0.11.3-SNAPSHOT/conf/connection.properties
  2. Konfigurasikan 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-xxxxxxxxxxxx
    Penting

    RAM user atau role yang terkait dengan AccessKey ini harus diberikan otorisasi RAM dan ditambahkan ke ruang kerja Serverless Spark yang sesuai.

    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.

    Penting

    Saat mengonfigurasi parameter accessKeyId dan accessKeySecret, 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.

    Catatan

    Jika 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

  1. Jalankan perintah berikut untuk masuk ke direktori alat EMR Serverless spark-submit:

    cd emr-serverless-spark-tool-0.11.3-SNAPSHOT
  2. Pilih 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-submit adalah 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 (π).

    Catatan

    Anda 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 \
    10000

    Pekerjaan PySpark

    Contoh ini menggunakan DataFrame.py dan employee.csv. Klik DataFrame.py dan employee.csv untuk mengunduh file uji, lalu unggah ke OSS.

    Catatan
    • File 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.csv

    Penjelasan 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.templateId dalam --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-template dan --conf: Jika Anda menentukan keduanya, yaitu --enable-template dan --conf spark.emr.serverless.templateId, maka ID templat dalam --conf akan menimpa templat default.

      • Tidak ada parameter yang ditentukan: Jika Anda tidak menentukan --enable-template maupun --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 workspaceId dalam file connection.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-sql adalah 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.sql

      Contoh ini menggunakan example.sql. Klik example.sql untuk mengunduh file uji, lalu unggah ke OSS.

      Isi contoh file example.sql

      CREATE TABLE IF NOT EXISTS employees (
          id INT,
          name STRING,
          age INT,
          department STRING
      );
      
      INSERT INTO employees VALUES
      (1, 'Alice', 30, 'Engineering'),
      (2, 'Bob', 25, 'Marketing'),
      (3, 'Charlie', 35, 'Sales');
      
      SELECT * FROM employees;
      

    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.sql

    Menjalankan 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

  1. Pada halaman EMR Serverless Spark, klik Job History di panel navigasi sebelah kiri.

  2. Pada halaman Job History, klik tab Development Jobs untuk melihat pekerjaan yang telah dikirim.

    image

(Opsional) Langkah 5: Hentikan pekerjaan Spark

cd emr-serverless-spark-tool-0.11.3-SNAPSHOT
./bin/spark-submit --kill <jr-8598aa9f459d****>
Catatan

Anda hanya dapat menghentikan pekerjaan yang berstatus Running.

FAQ

Bagaimana cara menentukan konektivitas jaringan saat mengirim pekerjaan batch menggunakan tool spark-submit?

  1. Persiapkan koneksi jaringan terlebih dahulu. Untuk informasi selengkapnya, lihat Add a network connection.

  2. Tentukan koneksi jaringan dalam perintah spark-submit menggunakan --conf:

    --conf spark.emr.serverless.network.service.name=<networkname>

    Ganti <networkname> dengan nama koneksi aktual Anda.