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
nullatau nilai kosong. -
Skema diperbarui secara default pada upsert dan insert - Hudi menyediakan antarmuka,
HoodieRecordPayloadyang 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 implementasiHoodieRecordPayloadantarmuka menggunakanDataSourceWriteOptions.PAYLOAD_CLASS_OPT_KEYparameter. -
Penghapusan membutuhkan skema — Saat menghapus, Anda harus menentukan kunci catatan, kunci partisi, dan bidang kunci pra-gabungkan. Kolom lainnya dapat dibuat
nullatau 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_KEYseperti yang ditunjukkan dalam contoh berikut..option(DataSourceWriteOptions.HIVE_URL_OPT_KEY, "jdbc:hive2://localhost:override-port-number -
Jenis
timestampdata di Spark adalah terdaftar sebagailongjenis data di Hive, dan bukan sebagai jenistimestampHive.
-
-
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_namesnilai 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-hiveklasifikasi konfigurasi untuk mengaturhive.parquet.use_column_namesketrue, 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 kontrol akses halus (FGAC) di EMR Tanpa Server, konfigurasi ini tidak diperlukan, karena pengguna harus menggunakan bukan. JavaSerializer KryoSerializer