Topik ini menjawab pertanyaan-pertanyaan umum tentang Spark.
Spark Core
Spark SQL
PySpark
Spark Streaming
spark-submit
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:
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.propertiesUbah level log pada file konfigurasi baru.
log4j.rootCategory=WARN, consoleDalam 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.
PentingPath 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.idPisahkan 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.idSebarkan 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
Masuk ke kluster dalam mode SSH. Untuk informasi lebih lanjut, lihat Masuk ke kluster.
Jalankan perintah berikut untuk mengubah versi Python:
export PYSPARK_PYTHON=/usr/bin/python3Jalankan perintah berikut untuk memeriksa versi Python:
pysparkJika output berisi informasi berikut, versi Python telah diubah ke Python 3:
Using Python version 3.6.8
Ubah versi Python secara permanen
Masuk ke kluster dalam mode SSH. Untuk informasi lebih lanjut, lihat Masuk ke kluster.
Ubah file konfigurasi.
Jalankan perintah berikut untuk membuka file profile:
vi /etc/profileTekan tombol I untuk masuk ke mode edit.
Tambahkan informasi berikut ke akhir file profile untuk mengubah versi Python:
export PYSPARK_PYTHON=/usr/bin/python3
Tekan tombol Esc untuk keluar dari mode edit. Kemudian, masukkan
:wquntuk menyimpan dan menutup file.
Jalankan perintah berikut untuk menerapkan konfigurasi yang dimodifikasi:
source /etc/profileJalankan perintah berikut untuk memeriksa versi Python:
pysparkJika 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.

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