Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan cluster Iceberg dengan Hive
Dengan Amazon EMR rilis 6.9.0 dan yang lebih tinggi, Anda dapat menggunakan Iceberg dengan cluster Hive tanpa harus melakukan langkah-langkah penyiapan yang diperlukan untuk Integrasi Sarang Iceberg Sumber Terbuka. Untuk Amazon EMR versi 6.8.0 dan yang lebih lama, Anda dapat menggunakan tindakan bootstrap untuk menginstal iceberg-hive-runtime
jar untuk mengonfigurasi dukungan Hive for Iceberg.
Amazon EMR 6.9.0 mencakup semua fitur untuk integrasi Hive 3.1.3 dengan Iceberg 0.14.1 dan
Buat cluster Iceberg
Anda dapat membuat cluster dengan Iceberg diinstal menggunakan AWS Management Console, AWS CLI atau Amazon EMR API. Dalam tutorial ini, Anda menggunakan AWS CLI untuk bekerja dengan Iceberg di cluster EMR Amazon. Untuk menggunakan konsol untuk membuat cluster dengan Iceberg diinstal, ikuti langkah-langkah di Build a Iceberg data lake menggunakan Amazon Athena, Amazon EMR,
Untuk menggunakan Iceberg di Amazon EMR dengan AWS CLI, pertama buat cluster menggunakan langkah-langkah di bawah ini. Untuk informasi tentang menentukan klasifikasi Iceberg menggunakan atau Java SDK, lihat AWS CLI atau. Menyediakan konfigurasi menggunakan AWS CLI saat Anda membuat klaster Sediakan konfigurasi menggunakan Java SDK ketika Anda membuat sebuah klaster Buat file bernama configurations.json
dengan konten berikut:
[{ "Classification":"iceberg-defaults", "Properties":{"iceberg.enabled":"true"} }]
Selanjutnya, buat cluster dengan konfigurasi berikut, ganti contoh jalur bucket Amazon S3 dan ID subnet dengan milik Anda sendiri:
aws emr create-cluster --release-label emr-6.9.0 \ --applications Name=Hive \ --configurations file://iceberg_configurations.json \ --region us-east-1 \ --name My_hive_Iceberg_Cluster \ --log-uri s3://
amzn-s3-demo-bucket
/ \ --instance-type m5.xlarge \ --instance-count 2 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef
Sebuah cluster Hive Iceberg melakukan hal-hal berikut:
-
Memuat jar runtime Iceberg Hive di Hive dan memungkinkan konfigurasi terkait Iceberg untuk mesin Hive.
-
Memungkinkan pemilihan mesin eksekusi dinamis Amazon EMR Hive untuk mencegah pengguna menyetel mesin eksekusi yang didukung untuk kompatibilitas Iceberg.
catatan
Cluster Hive Iceberg saat ini tidak mendukung Katalog Data AWS Glue. Katalog Iceberg default adalahHiveCatalog
, yang sesuai dengan metastore yang dikonfigurasi untuk lingkungan Hive. Untuk informasi selengkapnya tentang manajemen katalog, lihat Menggunakan HCatalog
Dukungan fitur
Amazon EMR 6.9.0 mendukung Hive 3.1.3 dan Iceberg 0.14.1. Dukungan fitur terbatas pada fitur yang kompatibel dengan Iceberg untuk Hive 3.1.2 dan 3.1.3. Perintah berikut didukung:
-
Dengan Amazon EMR merilis 6.9.0 hingga 6.12.x, Anda harus menyertakan jar di
libfb303
direktori Hive.auxlib
Gunakan perintah berikut untuk memasukkannya:sudo /usr/bin/ln -sf /usr/lib/hive/lib/libfb303-*.jar /usr/lib/hive/auxlib/libfb303.jar
Dengan Amazon EMR rilis 6.13 dan lebih tinggi,
libfb303
jar secara otomatis terhubung ke direktori Hive.auxlib
-
Membuat tabel
-
Tabel non-partisi - Tabel eksternal di Hive dapat dibuat dengan menyediakan handler penyimpanan sebagai berikut:
CREATE EXTERNAL TABLE x (i int) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler'
-
Tabel dipartisi - Tabel partisi eksternal di Hive dapat dibuat sebagai berikut:
CREATE EXTERNAL TABLE x (i int) PARTITIONED BY (j int) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler'
catatan
Format
STORED AS
file tidak ORC/AVRO/PARQUET didukung di Hive 3. Pilihan default dan satu-satunya adalah Parket. -
-
Menjatuhkan tabel —
DROP TABLE
Perintah ini digunakan untuk menjatuhkan tabel, seperti pada contoh berikut:DROP TABLE [IF EXISTS] table_name [PURGE];
-
Membaca tabel —
SELECT
pernyataan dapat digunakan untuk membaca tabel Iceberg di Hive, seperti dalam contoh berikut. Mesin eksekusi yang didukung adalah MR dan Tez.SELECT * FROM table_name
Untuk informasi tentang sintaks pilih Hive, lihat LanguageManual Memilih.
Untuk informasi tentang pernyataan tertentu dengan tabel Iceberg di Hive, lihat Apache Iceberg Select. -
Menyisipkan ke dalam tabel —
INSERT INTO
pernyataan HiveQL bekerja pada tabel Iceberg dengan dukungan untuk mesin eksekusi Map Reduce saja. Pengguna Amazon EMR tidak perlu secara eksplisit mengatur mesin eksekusi karena Amazon EMR Hive memilih mesin untuk Iceberg Tables saat runtime.-
Sisipkan tabel tunggal ke - Contoh:
INSERT INTO table_name VALUES ('a', 1); INSERT INTO table_name SELECT...;
-
Penyisipan multi-tabel ke - Penyisipan multi-tabel non-atom ke dalam pernyataan didukung. Contoh:
FROM source INSERT INTO table_1 SELECT a, b INSERT INTO table_2 SELECT c,d;
-
Dimulai dengan Amazon EMR 7.3.0, Hive with Iceberg mendukung AWS Glue Data Catalog sebagai metastore. Untuk menggunakan AWS Glue Data Catalog sebagai metastore, atur properti berikut.
SET iceberg.catalog.<catalog_name>.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog;
Atau, Anda juga dapat mengatur properti berikut.
SET iceberg.catalog.<catalog_name>.type=glue;
Anda kemudian dapat membuat tabel menggunakan contoh berikut.
CREATE EXTERNAL TABLE table_name (col1 type1, col2 type2,..) ROW FORMAT SERDE 'org.apache.iceberg.mr.hive.HiveIcebergSerDe' STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler' location '<location>' TBLPROPERTIES ('table_type'='iceberg', 'iceberg.catalog'='<catalog_name>');
Pertimbangan untuk menggunakan Iceberg dengan Hive
-
Iceberg mendukung jenis kueri berikut:
-
MEMBUAT TABEL
-
Membatalkan tabel
-
Masukkan ke dalam tabel
-
Baca tabel
-
-
Hanya mesin eksekusi MR (MapReduce) yang didukung untuk operasi DHTML (bahasa manipulasi data), dan MR tidak digunakan lagi di Hive 3.1.3.
-
AWS Glue Data Catalog saat ini tidak didukung untuk Iceberg with Hive.
-
Penanganan kesalahan tidak cukup kuat. Dalam kasus kesalahan konfigurasi, penyisipan ke kueri mungkin berhasil diselesaikan. Namun, kegagalan untuk memperbarui metadata dapat mengakibatkan hilangnya data.
Integrasi Iceberg Glue tidak berfungsi dengan katalog Redshift Managed Storage.