Tüm Ürünler
Search
Belge Merkezi

E-MapReduce:Submit a Spark job using spark-submit

Son Güncelleme:Oct 05, 2026

Bir ECS örneğinden EMR Serverless Spark spark-submit CLI aracını kullanarak bir Spark işi gönderin.

Ön koşullar

  • Java Development Kit (JDK) 1,8 veya üzeri bir sürüm yüklüdür.

  • Spark işini göndermek için bir RAM kullanıcısı kullanıyorsanız, bu kullanıcıyı EMR Serverless Spark çalışma alanına eklemeniz ve geliştirici rolü veya daha yüksek bir rol atamanız gerekir. Daha fazla bilgi için bkz. Kullanıcıları ve rolleri yönetme.

Yordam

Adım 1: EMR Serverless spark-submit aracını indirip yükleyin

  1. Kurulum paketini indirmek için emr-serverless-spark-tool-1.16.0-bin.zip dosyasını tıklayın.

  2. Kurulum paketini ECS örneğinize yükleyin. Daha fazla bilgi için bkz. Dosyaları yükleme veya indirme.

  3. EMR Serverless spark-submit aracının sıkıştırmasını açmak için aşağıdaki komutu çalıştırın.

    unzip emr-serverless-spark-tool-1.16.0-bin.zip

Adım 2: Parametreleri yapılandırın

Önemli

Spark'ın yüklü olduğu bir ortamda SPARK_CONF_DIR ortam değişkeni ayarlanmışsa, yapılandırma dosyasını SPARK_CONF_DIR tarafından belirtilen dizine yerleştirmeniz gerekir. Örneğin, bir EMR kümesinde bu dizin genellikle /etc/taihao-apps/spark-conf olur. Aksi takdirde sistem hata verir.

  1. connection.properties dosyasındaki yapılandırmayı değiştirmek için aşağıdaki komutu çalıştırın.

    vim emr-serverless-spark-tool-1.16.0/conf/connection.properties
  2. Aşağıdaki örnekte gösterildiği gibi dosyayı yapılandırın. Parametreler key=value biçimini kullanır.

    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
    Önemli

    Bu AccessKey ile ilişkili RAM kullanıcısının veya rolünün RAM üzerinden yetkilendirilmesi ve EMR Serverless Spark çalışma alanına eklenmesi gerekir.

    Aşağıdaki tabloda parametreler açıklanmaktadır.

    Parametre

    Zorunlu

    Açıklama

    accessKeyId

    Evet

    Spark işini çalıştıran Alibaba Cloud hesabının veya RAM kullanıcısının AccessKey ID'si ve AccessKey Secret değeri.

    Önemli

    accessKeyId ve accessKeySecret parametrelerini yapılandırırken, AccessKey ile ilişkili kullanıcının çalışma alanına bağlı OSS paketinde okuma ve yazma izinlerine sahip olduğundan emin olun. Çalışma alanına bağlı OSS paketini, Spark sayfasında çalışma alanının İşlemler sütunundaki Details seçeneğine tıklayarak görüntüleyebilirsiniz.

    accessKeySecret

    Evet

    regionId

    Evet

    Bölge kimliği. Bu örnekte Çin (Hangzhou) bölgesi kullanılmaktadır.

    endpoint

    Evet

    EMR Serverless Spark uç noktası. Daha fazla bilgi için bkz. Uç noktalar.

    Bu örnekte Çin (Hangzhou) bölgesi için genel uç nokta kullanılmaktadır. Parametre değeri emr-serverless-spark.cn-hangzhou.aliyuncs.com şeklindedir.

    Not

    ECS örneğiniz internet erişimine sahip değilse, bir VPC uç noktası kullanmanız gerekir.

    workspaceId

    Evet

    EMR Serverless Spark çalışma alanının kimliği.

Adım 3: Bir Spark işi gönderin****

  1. EMR Serverless spark-submit aracı dizinine gitmek için aşağıdaki komutu çalıştırın.

    cd emr-serverless-spark-tool-1.16.0
  2. İş türüne göre bir gönderim yöntemi seçin.

    Bir iş gönderirken, JAR paketi veya Python betiği gibi işin bağımlı olduğu dosya kaynaklarını belirtin. Bu kaynaklar OSS'de veya yerel olarak depolanabilir. Bu konudaki tüm örnekler OSS kaynaklarını kullanır.

    spark-submit

    spark-submit , Java/Scala ve PySpark görevleri için Spark'ın genel amaçlı gönderim aracıdır.

    Java/Scala işleri

    Bu örnekte pi (π) değerini hesaplayan yerleşik bir Spark örneği olan spark-examples_2.12-3.5.2.jar kullanılmaktadır. JAR paketini indirmek ve OSS'e yüklemek için spark-examples_2.12-3.5.2.jar dosyasını tıklayın.

    Not

    spark-examples_2.12-3.5.2.jar dosyası, işleri göndermek için esr-4.x motor sürümüyle birlikte kullanılmalıdır. Esr-5.x motor sürümü kullanıyorsanız, bu örnek için spark-examples_2.13-4.0.1.jar dosyasını indirin.

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

    PySpark işleri

    Bu örnekte DataFrame.py ve employee.csv dosyaları kullanılmaktadır. Test dosyalarını indirmek ve OSS'e yüklemek için DataFrame.py ve employee.csv bağlantılarını tıklayın.

    Not
    • DataFrame.py, OSS'deki verileri işlemek için Apache Spark çerçevesini kullanan bir kod parçacığıdır.

    • employee.csv, çalışan adlarını, departmanları ve maaşları içeren bir veri dosyasıdır.

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

    Parametreler aşağıda açıklanmıştır.

    • Desteklenen açık kaynak parametreleri


      Parametre


      Örnek


      Açıklama


      --name


      SparkPi


      Spark işi için uygulama adı.


      --class


      org.apache.spark.examples.SparkPi


      Spark işi için giriş sınıfı. Bu parametre Java veya Scala uygulamaları için gereklidir ancak Python uygulamaları için gerekli değildir.


      --num-executors


      5


      Spark işi için yürütücü sayısı.


      --driver-cores


      1


      Spark işi için sürücü çekirdek sayısı.


      --driver-memory


      1g


      Spark işi için sürücü bellek miktarı.


      --executor-cores


      2


      Spark işi için yürütücü çekirdek sayısı.


      --executor-memory


      2g


      Spark işi için yürütücü bellek miktarı.


      --files


      oss://<yourBucket>/file1,oss://<yourBucket>/file2


      Spark işi için gereken kaynak dosyalar. Dosyalar OSS'de veya yerel olarak depolanabilir. Birden çok dosyayı virgül (,) ile ayırın.


      --py-files


      oss://<yourBucket>/file1.py,oss://<yourBucket>/file2.py


      Spark işi için gereken Python betikleri. Betikler OSS'de veya yerel olarak depolanabilir. Birden çok dosyayı virgül (,) ile ayırın. Bu parametre yalnızca PySpark uygulamaları içindir.


      --jars


      oss://<yourBucket>/file1.jar,oss://<yourBucket>/file2.jar


      Spark işi için gereken JAR paketleri. Kaynaklar OSS'de veya yerel olarak depolanabilir. Birden çok dosyayı virgül (,) ile ayırın.


      --archives


      oss://<yourBucket>/archive.tar.gz#env,oss://<yourBucket>/archive2.zip


      Spark işi için gereken arşiv dosyaları. Kaynaklar OSS'de veya yerel olarak depolanabilir. Birden çok dosyayı virgül (,) ile ayırın.


      --queue


      root_queue


      Spark işinin çalıştığı kuyruğun adı. Bu ad, EMR Serverless Spark çalışma alanınızın kuyruk yönetimi bölümündeki kuyruk adıyla eşleşmelidir.


      --proxy-user


      test


      Belirtilen değer, HADOOP_USER_NAME ortam değişkenini geçersiz kılar. Davranış açık kaynak sürümüyle tutarlıdır.


      --conf


      spark.tags.key=value


      Spark işi için özel bir parametre.


      --status


      jr-8598aa9f459d****


      Spark işinin durumunu kontrol eder.


      --kill


      jr-8598aa9f459d****


      Spark işini sonlandırır.

    • Gelişmiş parametreler

      Parametre

      Örnek

      Açıklama

      --detach

      Değer gerekmez

      İş durumunu beklemeden spark-submit komutundan hemen çıkar.

      --detail

      jr-8598aa9f459d****

      Spark işinin ayrıntılarını görüntüler.

      --release-version

      esr-4.1.1 (Spark 3.5.2, Scala 2.12)

      Spark motor sürümü. Konsolda görüntülenen sürüm numarasını girin.

      --enable-template

      Değer gerekmez

      Şablon özelliğini etkinleştirir. İş daha sonra çalışma alanının varsayılan yapılandırma şablonunu kullanır.

      Configuration management içinde bir Configurations oluşturduysanız, --conf parametresine spark.emr.serverless.templateId ekleyerek kimliğini belirtebilirsiniz. İş daha sonra doğrudan belirtilen şablonu uygular. Şablon oluşturma hakkında daha fazla bilgi için bkz. Yapılandırma yönetimi.

      • Yalnızca --enable-template belirtirseniz, görev çalışma alanının varsayılan yapılandırma şablonunu otomatik olarak uygular.

      • Şablon kimliğini belirtmek için yalnızca --conf kullanın: Görev doğrudan belirtilen şablon kimliğini uygular.

      • Hem --enable-template hem de --conf belirtme: Hem --enable-template hem de --conf spark.emr.serverless.templateId belirtirseniz, --conf içindeki şablon kimliği varsayılan şablonu geçersiz kılar.

      • Parametre belirtilmemesi: --enable-template kullanmazsanız veya --conf spark.emr.serverless.templateId belirtmezseniz, iş herhangi bir şablon yapılandırması uygulamaz.

      --timeout

      60

      İş için zaman aşımı süresi (saniye cinsinden).

      --workspace-id

      w-4b4d7925a797****

      İş düzeyindeki çalışma alanı kimliği. connection.properties dosyasındaki workspaceId parametresini geçersiz kılar.

    • Desteklenmeyen açık kaynak parametreleri

      • --deploy-mode

      • --master

      • --repositories

      • --keytab

      • --principal

      • --total-executor-cores

      • --driver-library-path

      • --driver-class-path

      • --supervise

      • --verbose

    spark-sql

    spark-sql , SQL sorgularını veya betiklerini doğrudan çalıştırmak için kullanılan bir araçtır.

    • Örnek 1: Bir SQL ifadesini doğrudan çalıştırma

      spark-sql -e "SHOW TABLES"

      Bu komut, geçerli veritabanındaki tüm tabloları listeler.

    • Örnek 2: Bir SQL betik dosyası çalıştırma

      spark-sql -f oss://<yourBucketname>/path/to/your/example.sql

      Bu örnekte example.sql dosyası kullanılmaktadır. Test dosyasını indirmek ve OSS'e yüklemek için example.sql dosyasını tıklayın.

      example.sql dosyasının örnek içeriği

      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;
      

    Aşağıdaki tabloda parametreler açıklanmaktadır.


    Parametre


    Örnek


    Açıklama


    -e "<sql>"


    -e "SELECT * FROM table"


    Komut satırından satır içi bir SQL ifadesi yürütür.


    -f <path>


    -f oss://path/script.sql


    Belirtilen yoldan bir SQL betik dosyası yürütür.

Adım 4: Bir Spark işini sorgulayın

CLI

İş durumunu sorgulayın

cd emr-serverless-spark-tool-1.16.0
./bin/spark-submit --status <jr-8598aa9f459d****>

İş ayrıntılarını sorgulayın

cd emr-serverless-spark-tool-1.16.0
./bin/spark-submit --detail <jr-8598aa9f459d****>

Kullanıcı Arayüzü

  1. EMR Serverless Spark sayfasında sol gezinme bölmesinden Job History seçeneğine tıklayın.

  2. Job History sayfasında, Development Job Runs sekmesinde gönderilen işleri görüntüleyebilirsiniz.

    İş listesi Job name/Job run ID, Status, Tags, Submission time ve Actions sütunlarını içerir. Actions sütununda Stop, Details veya Spark UI seçeneklerine tıklayabilirsiniz.

(İsteğe bağlı) Adım 5: Bir Spark işini sonlandırın

cd emr-serverless-spark-tool-1.16.0
./bin/spark-submit --kill <jr-8598aa9f459d****>
Not

Yalnızca running durumunda olan işleri sonlandırabilirsiniz.

SSS

spark-submit aracıyla toplu bir iş gönderirken ağ bağlantısını nasıl belirtirim?

  1. Bir ağ bağlantısı oluşturun. Daha fazla bilgi için bkz. Ağ bağlantısı ekleme.

  2. spark-submit komutunda, ağ bağlantısını belirtmek için --conf parametresini kullanın.

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

    <networkname> yerine ağ bağlantınızın adını yazın.