全部产品
Search
文档中心

E-MapReduce:FAQ

更新时间:Jul 02, 2025

Topik ini menjawab pertanyaan-pertanyaan umum tentang Spark.

Bagaimana cara melihat informasi tentang pekerjaan Spark historis?

Untuk melihat informasi pekerjaan Spark historis, ikuti langkah-langkah berikut: Masuk ke konsol E-MapReduce (EMR) dan buka tab Access Links and Ports untuk kluster yang diinginkan. Pada tab Tautan Akses dan Port, temukan layanan Spark dan klik URL untuk Spark. Untuk informasi lebih lanjut tentang cara mengakses antarmuka web Spark, lihat Akses antarmuka web komponen sumber terbuka di konsol EMR.

Apakah saya dapat mengirimkan pekerjaan Spark dalam mode standalone?

Tidak, Anda tidak dapat mengirimkan pekerjaan Spark dalam mode standalone. EMR memungkinkan Anda mengirimkan pekerjaan Spark dalam mode Spark on YARN atau mode Spark on Kubernetes. Mode standalone dan mode Mesos tidak didukung.

Bagaimana cara mengurangi jumlah log yang dihasilkan oleh alat CLI Spark 2?

Secara default, jika Anda menggunakan Spark 2 pada kluster DataLake EMR, log level INFO akan dihasilkan saat menggunakan alat CLI seperti spark-sql dan spark-shell. Untuk mengurangi jumlah log yang dihasilkan, lakukan langkah-langkah berikut untuk mengubah level log log4j:

  1. Buat file konfigurasi log4j.properties pada node tempat Anda ingin menjalankan alat CLI, seperti node master. Anda juga dapat menyalin file konfigurasi dari konfigurasi default dengan menjalankan perintah berikut:

    cp /etc/emr/spark-conf/log4j.properties /new/path/to/log4j.properties
  2. Ubah level log pada file konfigurasi baru.

    log4j.rootCategory=WARN, console
  3. Dalam file konfigurasi spark-defaults.conf, ubah nilai parameter -Dlog4j.configuration=file:/etc/emr/spark-conf/log4j.properties dalam item konfigurasi spark.driver.extraJavaOptions menjadi -Dlog4j.configuration=file:/new/path/to/log4j.properties.

    Penting

    Path dalam nilai item konfigurasi harus memiliki awalan file:.

Bagaimana cara menggunakan fitur penggabungan file kecil dari Spark 3?

Untuk mengaktifkan fitur penggabungan file kecil di Spark, atur parameter spark.sql.adaptive.merge.output.small.files.enabled menjadi true. Secara default, ukuran maksimum file yang digabungkan adalah 256 MB. Jika ukuran default terlalu kecil, atur parameter spark.sql.adaptive.advisoryOutputFileSizeInBytes ke nilai yang lebih besar.

Bagaimana cara menangani skew data di Spark SQL?

  • Untuk Spark 2, gunakan salah satu metode berikut untuk menangani skew data:

    • Filter data yang tidak relevan, seperti data null, saat membaca data dari tabel.

    • Siar tabel kecil.

      select /*+ BROADCAST (table1) */ * from table1 join table2 on table1.id = table2.id
    • Pisahkan data skew berdasarkan kunci skew tertentu.

      select * from table1_1 join table2 on table1_1.id = table2.id
      union all
      select /*+ BROADCAST (table1_2) */ * from table1_2 join table2 on table1_2.id = table2.id
    • Sebarkan data skew berdasarkan kunci skew yang diketahui.

      select id, value, concat(id, (rand() * 10000) % 3) as new_id from A
      select id, value, concat(id, suffix) as new_id
      from ( 
      select id, value, suffix
       from B Lateral View explode(array(0, 1, 2)) tmp as suffix)
    • Sebarkan data skew tanpa kunci skew yang diketahui.

      select t1.id, t1.id_rand, t2.name
      from (
      select id ,
      case when id = null then concat('SkewData_', cast(rand() as string))
      else id end as id_rand
      from test1
      where statis_date='20221130 ') t1
      left join test2 t2
      on t1.id_rand = t2.id
  • Untuk Spark 3, lakukan langkah-langkah berikut untuk menangani skew data: Masuk ke konsol EMR dan buka tab Configure halaman layanan Spark. Di tab tersebut, atur parameter spark.sql.adaptive.enabled dan spark.sql.adaptive.skewJoin.enabled menjadi true.

Bagaimana cara menggunakan Python 3 dalam pekerjaan PySpark?

Contoh ini menggunakan Spark 2.X dan kluster DataLake EMR V5.7.0 untuk menjelaskan cara menggunakan Python 3 dalam pekerjaan PySpark.

Anda dapat menggunakan salah satu metode berikut untuk mengubah versi Python:

Ubah versi Python secara sementara

  1. Masuk ke kluster dalam mode SSH. Untuk informasi lebih lanjut, lihat Masuk ke kluster.

  2. Jalankan perintah berikut untuk mengubah versi Python:

    export PYSPARK_PYTHON=/usr/bin/python3
  3. Jalankan perintah berikut untuk memeriksa versi Python:

    pyspark

    Jika output berisi informasi berikut, versi Python telah diubah ke Python 3:

    Using Python version 3.6.8

Ubah versi Python secara permanen

  1. Masuk ke kluster dalam mode SSH. Untuk informasi lebih lanjut, lihat Masuk ke kluster.

  2. Ubah file konfigurasi.

    1. Jalankan perintah berikut untuk membuka file profile:

      vi /etc/profile
    2. Tekan tombol I untuk masuk ke mode edit.

    3. Tambahkan informasi berikut ke akhir file profile untuk mengubah versi Python:

      export PYSPARK_PYTHON=/usr/bin/python3

      export

    4. Tekan tombol Esc untuk keluar dari mode edit. Kemudian, masukkan :wq untuk menyimpan dan menutup file.

  3. Jalankan perintah berikut untuk menerapkan konfigurasi yang dimodifikasi:

    source /etc/profile
  4. Jalankan perintah berikut untuk memeriksa versi Python:

    pyspark

    Jika output berisi informasi berikut, versi Python telah diubah ke Python 3:

    Using Python version 3.6.8

Mengapa pekerjaan Spark Streaming berhenti berjalan secara tak terduga?

  • Periksa apakah versi Spark lebih awal dari 1.6. Jika ya, perbarui versi Spark.

    Versi Spark sebelum 1.6 memiliki bug kebocoran memori yang dapat menyebabkan kontainer berhenti berjalan secara tak terduga.

  • Periksa apakah kode Anda dioptimalkan untuk penggunaan memori.

Mengapa pekerjaan Spark Streaming tetap dalam status Running di konsol EMR setelah pekerjaan dihentikan?

EMR memiliki masalah terkait pemantauan status pekerjaan Spark Streaming yang dikirimkan dalam mode yarn-client. Periksa apakah pekerjaan dikirimkan dalam mode yarn-client. Jika ya, ubah modenya menjadi yarn-cluster.

Apa yang harus saya lakukan jika pesan kesalahan java.lang.ClassNotFoundException ditampilkan saat saya menjalankan spark-submit untuk mengirimkan pekerjaan dalam mode YARN-cluster di kluster EMR dengan autentikasi Kerberos diaktifkan?

Gambar berikut menunjukkan pesan kesalahan.

image

Penyebab: Saat menjalankan spark-submit untuk mengirimkan pekerjaan dalam mode YARN-cluster di kluster EMR dengan autentikasi Kerberos diaktifkan, jalur kelas driver Spark tidak diperluas secara otomatis untuk menyertakan file JAR dalam direktori tertentu. Akibatnya, kesalahan terjadi saat menjalankan pekerjaan Spark.

Solusi: Tambahkan parameter --jars. Dengan cara ini, paket JAR di direktori /opt/apps/METASTORE/metastore-current/hive2 juga ditambahkan ke perintah spark-submit selain paket JAR Spark.

Penting

Dalam mode YARN-cluster, dependensi yang dikonfigurasikan untuk parameter --jars harus dipisahkan dengan koma (,).

Sebagai contoh, jika paket JAR Spark adalah /opt/apps/SPARK3/spark3-current/examples/jars/spark-examples_2.12-3.5.3-emr.jar, jalankan kode berikut untuk mengirimkan pekerjaan:

spark-submit --deploy-mode cluster --class org.apache.spark.examples.SparkPi --master yarn \
--jars $(ls /opt/apps/METASTORE/metastore-current/hive2/*.jar | tr '\n' ',') \
/opt/apps/SPARK3/spark3-current/examples/jars/spark-examples_2.12-3.5.3-emr.jar