Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Percikan EMR MagicCommitProtocol
Dari EMR 6.15.0 dan seterusnya, MagicCommitProtocol menjadi default FileCommitProtocol untuk Spark saat menggunakan sistem file S3A.
MagicCommitProtocol
MagicCommitProtocol Ini adalah implementasi alternatif dari FileCommitProtocol
MagicCommitProtocol Ini adalah FileCommitProtocol implementasi default yang digunakan oleh Spark yang berjalan di Amazon Elastic Map Reduce (EMR) saat sistem file S3A digunakan. MagicCommitProtocol Secara internal menggunakan MagicV2Committer untuk melakukan penulisan file ke Amazon S3.
Untuk operasi penyisipan statis, MagicCommitProtocol menulis file di lokasi keluaran pekerjaan selama fase komit tugas. Sebaliknya, untuk operasi penimpaan sisipan dinamis, file yang ditulis oleh upaya tugas hanya muncul di lokasi keluaran pekerjaan pada komit pekerjaan. Ini dicapai dengan mengekspor metadata komit kembali ke driver Spark pada panggilan komit tugas.
Mengaktifkan MagicCommitProtocol
MagicCommitProtocol Ini diaktifkan secara default untuk Spark yang berjalan di Amazon Elastic Map Reduce (EMR) saat menggunakan sistem file S3A.
Untuk menggunakan sistem file S3A, Anda dapat:
-
Gunakan skema file seperti
s3a://
saat mendefinisikan tabel, partisi, atau direktori. -
Atur konfigurasi
fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
di core-site.xml.
Menonaktifkan MagicCommitProtocol
-
Anda dapat mengatur
spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol
ke false dengan hard-coding di aSparkConf
, meneruskannya sebagai--conf
parameter di shell Spark atauspark-submit
andspark-sql
tools, atau di.conf/spark-defaults.conf
Untuk informasi selengkapnya, lihat konfigurasi Sparkdi dokumentasi Apache Spark. Contoh berikut menunjukkan cara menonaktifkan MagicCommitProtocol saat menjalankan
spark-sql
perintah.spark-sql \ --conf spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol=false \ -e "INSERT OVERWRITE TABLE target_table SELECT * FROM source_table;"
-
Gunakan klasifikasi
spark-defaults
konfigurasi untuk mengaturspark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol
properti ke false. Untuk informasi selengkapnya, lihat Mengkonfigurasi aplikasi.
MagicCommitProtocol pertimbangan
-
Untuk penyisipan partisi statis, Pada pelaksana Spark, MagicCommitProtocol mengkonsumsi sejumlah kecil memori untuk setiap file yang ditulis oleh upaya tugas sampai tugas dikomit atau dibatalkan. Dalam kebanyakan pekerjaan, jumlah memori yang dikonsumsi dapat diabaikan. Tidak ada persyaratan memori tambahan pada driver Spark
-
Untuk penyisipan partisi dinamis, pada driver Spark, MagicCommitProtocol memerlukan memori untuk menyimpan info metadata dari setiap file yang dikomit hingga pekerjaan dikomit atau dibatalkan. Di sebagian besar pekerjaan, pengaturan memori driver Spark default dapat diabaikan.
Untuk pekerjaan yang memiliki tugas yang berjalan lama yang menulis sejumlah besar file, memori yang dikonsumsi protokol komit mungkin terlihat dan memerlukan penyesuaian pada memori yang dialokasikan untuk Spark, terutama untuk pelaksana Spark. Anda dapat menyetel memori menggunakan
spark.driver.memory
properti untuk driver Spark, danspark.executor.memory
properti untuk pelaksana Spark. Sebagai pedoman, satu tugas menulis 100.000 file biasanya membutuhkan memori tambahan 200MB. Untuk informasi lebih lanjut, lihat Properti aplikasidalam dokumentasi Apache Spark Configuration.