

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Tambahkan langkah Spark
<a name="emr-spark-submit-step"></a>

Anda dapat menggunakan langkah-langkah Amazon EMR untuk mengirimkan pekerjaan ke kerangka Spark diinstal pada cluster EMR. Untuk informasi lebih lanjut, lihat [Langkah](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-overview.html#emr-overview-data-processing) dalam Panduan Manajemen Amazon EMR. Dalam konsol dan CLI, Anda melakukan ini menggunakan langkah aplikasi Spark, yang menjalankan `spark-submit` skrip sebagai langkah atas nama Anda. Dengan API, Anda menggunakan langkah untuk memohon `spark-submit` menggunakan `command-runner.jar`.

Untuk informasi selengkapnya tentang mengirimkan aplikasi ke Spark, lihat [Mengirimkan aplikasi](https://spark.apache.org/docs/latest/submitting-applications.html) topik dalam dokumentasi Apache Spark.

**Untuk mengirimkan langkah Spark menggunakan konsol**

1. [Buka konsol EMR Amazon di https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr/)

1. Di **Cluster Daftar** Pilih nama klaster Anda.

1. Gulir ke bagian **Langkah** dan perluas, lalu pilih **Tambahkan langkah**.

1. Di **Tambahkan Langkah** kotak dialog:
   + Untuk **Jenis langkah**, pilih **Aplikasi Spark**.
   + Untuk **Nama**, menerima nama default (aplikasi Spark) atau ketik nama baru.
   + Untuk **Mode penyebaran**, pilih **Klien** atau **Kluster**Mode. Mode klien meluncurkan program driver pada instance utama cluster, sementara mode cluster meluncurkan program driver Anda di cluster. Untuk mode klien, output log pengemudi muncul di log langkah, sedangkan untuk mode cluster, output log pengemudi muncul di log untuk wadah BEARN pertama. Untuk informasi lebih lanjut, lihat [Ikhtisar mode](https://spark.apache.org/docs/latest/cluster-overview.html) dalam dokumentasi Apache Spark.
   + Tentukan yang diinginkan **Spark-submit opsi**. Untuk informasi lebih lanjut tentang `spark-submit` pilihan, lihat [Meluncurkan aplikasi dengan spark-submit](https://spark.apache.org/docs/latest/submitting-applications.html#launching-applications-with-spark-submit).
   + Untuk **Lokasi aplikasi**, tentukan jalur URI lokal atau S3 dari aplikasi.
   + Untuk **Argumen**, biarkan kolomnya kosong.
   + Untuk **Tindakan pada kegagalan**, terima opsi default (**Lanjutkan**).

1. Pilih **Tambahkan**. Langkah muncul di konsol dengan status Tertunda. 

1. Status perubahan langkah dari **Menunggu** ke **berjalan** ke **Selesai** sebagai langkah berjalan. Untuk memperbarui status, pilih ikon **Segarkan** di atas kolom **Tindakan**. 

1. Hasil langkah terletak di konsol Amazon EMR Cluster Detail halaman di sebelah langkah Anda di bawah **File Log** jika Anda memiliki pencatatan yang dikonfigurasi. Anda dapat menemukan informasi langkah dalam bucket log yang Anda konfigurasi saat meluncurkan kluster. 

**Untuk mengirimkan pekerjaan ke Spark menggunakan AWS CLI**

Kirim langkah ketika Anda membuat gugus atau menggunakan `aws emr add-steps` subperintah dalam sebuah cluster yang ada. 

1. Gunakan `create-cluster` seperti yang ditunjukkan dalam contoh berikut ini.
**catatan**  
Karakter kelanjutan baris Linux (\$1) disertakan untuk memudahkan pembacaan. Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda sisipan (^).

   ```
   aws emr create-cluster --name "Add Spark Step Cluster" --release-label emr-7.12.0 --applications Name=Spark \
   --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \
   --steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,Args=[--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/examples/jars/spark-examples.jar,10] --use-default-roles
   ```

   Sebagai alternatif, Anda dapat menggunakannya `command-runner.jar` Seperti yang ditunjukkan dalam contoh berikut.

   ```
   aws emr create-cluster --name "Add Spark Step Cluster" --release-label emr-7.12.0 \
   --applications Name=Spark --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \
   --steps Type=CUSTOM_JAR,Name="Spark Program",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[spark-example,SparkPi,10] --use-default-roles
   ```
**catatan**  
Karakter kelanjutan baris Linux (\$1) disertakan untuk memudahkan pembacaan. Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda sisipan (^).

1. Atau, menambahkan langkah-langkah untuk cluster yang sudah berjalan. Gunakan `add-steps`.

   ```
   aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,Args=[--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/examples/jars/spark-examples.jar,10]
   ```

   Sebagai alternatif, Anda dapat menggunakannya `command-runner.jar` Seperti yang ditunjukkan dalam contoh berikut.

   ```
   aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=CUSTOM_JAR,Name="Spark Program",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[spark-example,SparkPi,10]
   ```

**Untuk mengirimkan pekerjaan ke Spark menggunakan SDK for Java**

1. Contoh berikut menunjukkan cara menambahkan langkah ke cluster dengan Spark menggunakan Java.

   ```
   AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
   AmazonElasticMapReduce emr = new AmazonElasticMapReduceClient(credentials);
    
   StepFactory stepFactory = new StepFactory();
   AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials);
   AddJobFlowStepsRequest req = new AddJobFlowStepsRequest();
   req.withJobFlowId("j-1K48XXXXXXHCB");
   
   List<StepConfig> stepConfigs = new ArrayList<StepConfig>();
   		
   HadoopJarStepConfig sparkStepConf = new HadoopJarStepConfig()
   			.withJar("command-runner.jar")
   			.withArgs("spark-submit","--executor-memory","1g","--class","org.apache.spark.examples.SparkPi","/usr/lib/spark/examples/jars/spark-examples.jar","10");			
   		
   StepConfig sparkStep = new StepConfig()
   			.withName("Spark Step")
   			.withActionOnFailure("CONTINUE")
   			.withHadoopJarStep(sparkStepConf);
   
   stepConfigs.add(sparkStep);
   req.withSteps(stepConfigs);
   AddJobFlowStepsResult result = emr.addJobFlowSteps(req);
   ```

1. Lihat hasil langkah dengan memeriksa log untuk langkah tersebut. Anda dapat melakukan ini di Konsol Manajemen AWS jika Anda telah mengaktifkan logging dengan memilih Langkah, memilih **langkah** Anda, dan kemudian, untuk **file Log**, memilih salah satu `stdout` atau`stderr`. Untuk melihat log yang tersedia, pilih **Melihat log**.

## Menimpa pengaturan konfigurasi default Spark
<a name="dynamic-configuration"></a>

Anda mungkin ingin menimpa Spark nilai konfigurasi default secara per aplikasi. Anda dapat melakukan ini ketika Anda mengirimkan aplikasi menggunakan langkah, yang pada dasarnya melewati opsi untuk `spark-submit`. Misalnya, Anda mungkin ingin mengubah memori yang dialokasikan untuk proses pelaksana dengan mengubah `spark.executor.memory`. Anda akan menyediakan `--executor-memory` beralih dengan argumen seperti berikut:

```
spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10
```

Demikian pula, Anda dapat menyetel `--executor-cores` dan `--driver-memory`. Dalam satu langkah, Anda akan memberikan argumen berikut untuk langkah:

```
--executor-memory 1g --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10
```

Anda juga dapat menyetel pengaturan yang mungkin tidak memiliki sakelar bawaan menggunakan `--conf` Pilihan. Untuk informasi selengkapnya tentang pengaturan lain yang merdu, lihat bagian [Dinamis memuat properti Spark](https://spark.apache.org/docs/latest/configuration.html#dynamically-loading-spark-properties) topik dalam dokumentasi Apache Spark.