Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pertimbangan dan batasan untuk menggunakan Hudi di Amazon EMR
-
Bidang kunci catatan tidak boleh null atau kosong – Bidang yang Anda tentukan sebagai bidang kunci catatan tidak dapat memiliki
null
atau nilai kosong. -
Skema diperbarui secara default pada upsert dan insert - Hudi menyediakan antarmuka,
HoodieRecordPayload
yang menentukan bagaimana input DataFrame dan dataset Hudi yang ada digabungkan untuk menghasilkan dataset baru yang diperbarui. Hudi menyediakan implementasi default dari kelas ini,OverwriteWithLatestAvroPayload
, yang menimpa catatan yang ada dan memperbarui skema seperti yang ditentukan dalam input. DataFrame Untuk menyesuaikan logika ini gun menerapkan gabungan dan pembaruan parsial, Anda dapat memberikan implementasiHoodieRecordPayload
antarmuka menggunakanDataSourceWriteOptions.PAYLOAD_CLASS_OPT_KEY
parameter. -
Penghapusan membutuhkan skema — Saat menghapus, Anda harus menentukan kunci catatan, kunci partisi, dan bidang kunci pra-gabungkan. Kolom lainnya dapat dibuat
null
atau kosong, tapi skema penuh diperlukan. -
Batasan tabel MOR — MoR tabel tidak mendukung savepointing. Anda dapat mengkueri tabel MOR menggunakan tampilan yang dioptimalkan untuk membaca atau tampilan waktu nyata (
) dari Spark SQL, Presto, atau Hive. Menggunakan tampilan yang dioptimalkan untuk membaca hanya mengekspos data file dasar, dan tidak mengekspos tampilan gabungan data dasar dan log.tableName
_rt -
Sarang
-
Untuk mendaftarkan tabel di metastore Hive, Hudi mengharapkan server Hive Thrift akan berjalan pada port default
10000
. Jika Anda mengganti port ini dengan port kustom, lewati pilihanHIVE_URL_OPT_KEY
seperti yang ditunjukkan dalam contoh berikut..option(DataSourceWriteOptions.HIVE_URL_OPT_KEY, "jdbc:hive2://localhost:
override-port-number
-
Jenis
timestamp
data di Spark adalah terdaftar sebagailong
jenis data di Hive, dan bukan sebagai jenistimestamp
Hive.
-
-
Presto
-
Presto tidak mendukung pembacaan tabel waktu nyata MoR dalam versi Hudi di bawah 0.6.0.
-
Presto hanya mendukung kueri snapshot.
-
Untuk Presto agar benar dalam menafsirkan kolom set data Hudi, atur
hive.parquet_use_column_names
nilai ketrue
.-
Untuk mengatur nilai sesi, di shell Presto, jalankan perintah berikut:
set session hive.parquet_use_column_names=true
-
Untuk mengatur nilai pada tingkat klaster, gunakan
presto-connector-hive
klasifikasi konfigurasi untuk mengaturhive.parquet.use_column_names
ketrue
, seperti yang ditunjukkan dalam contoh berikut. Untuk informasi selengkapnya, lihat Konfigurasikan aplikasi.[ { "Classification": "presto-connector-hive", "Properties": { "hive.parquet.use-column-names": "true" } } ]
-
-
-
HBase Indeks
-
HBase Versi yang digunakan untuk membangun Hudi mungkin berbeda dari yang tercantum dalam Panduan Rilis EMR. Untuk menarik dependensi yang benar untuk sesi Spark Anda, jalankan perintah berikut.
spark-shell \ --jars /usr/lib/spark/external/lib/spark-avro.jar,/usr/lib/hudi/cli/lib/*.jar \ --conf "spark.serializer=org.apache.spark.serializer.KryoSerializer" \ --conf "spark.sql.hive.convertMetastoreParquet=false"
-
Pengaturan untuk kinerja terbaik — Untuk EMR 7.3+/ Hudi 0.15+, pelanggan disarankan untuk mengatur konfigurasi ini untuk mengurangi overhead serialisasi Kryo:
--conf 'spark.kryo.registrator=org.apache.spark.HoodieKryoRegistrar'
catatan
Jika Anda menggunakan fine-grained access controle (FGAC) pada EMR Serverless, konfigurasi ini tidak diperlukan, karena pengguna harus menggunakan bukan. JavaSerializer KryoSerializer