Katalog Hive menghubungkan Realtime Compute for Apache Flink ke metastore Hive atau Alibaba Cloud Data Lake Formation (DLF) Anda, sehingga Anda dapat melakukan kueri dan menulis tabel Hive tanpa perlu mendeklarasikan pernyataan DDL untuk setiap tabel. Tabel yang terdaftar dalam katalog Hive tersedia sebagai tabel sumber, tabel hasil, atau tabel dimensi dalam penerapan streaming maupun batch.
Topik ini mencakup:
Prasyarat
Sebelum memulai, pastikan Anda telah:
Jika Anda menggunakan metastore Hive:
Layanan metastore Hive sedang berjalan. Untuk menjalankannya, eksekusi
hive --service metastore. Untuk memverifikasi bahwa layanan tersebut mendengarkan pada port default (9083), jalankannetstat -ln | grep 9083. Jika Anda mengonfigurasi port berbeda dihive-site.xml, ganti9083dengan port tersebut.Daftar putih dikonfigurasi untuk layanan metastore Hive, dengan Blok CIDR dari Realtime Compute for Apache Flink ditambahkan. Untuk langkah-langkahnya, lihat Konfigurasikan daftar putih dan Tambahkan aturan security group.
Jika Anda menggunakan Alibaba Cloud DLF:
DLF telah diaktifkan di akun Alibaba Cloud Anda.
Batasan
| Batasan | Detail |
|---|---|
| Jenis metastore yang didukung | Metastore Hive yang dikelola sendiri |
| Versi Hive yang didukung | 2.0.0–2.3.9 dan 3.1.0–3.1.3 |
| Versi Hive lama (1.X, 2.1.X, 2.2.X) | Tidak didukung di Apache Flink 1.16 atau versi lebih baru; memerlukan Ververica Runtime (VVR) 6.X |
| Tabel non-Hive dalam katalog berbasis DLF | Memerlukan VVR 8.0.6 atau versi lebih baru |
| Menulis ke OSS-HDFS melalui katalog Hive | Memerlukan VVR 8.0.6 atau versi lebih baru |
Konfigurasikan metadata Hive
Sebelum membuat katalog Hive, hubungkan kluster Hadoop Anda ke virtual private cloud (VPC) tempat Realtime Compute for Apache Flink berjalan, lalu unggah file konfigurasi Anda ke Object Storage Service (OSS).
Langkah 1: Hubungkan kluster Hadoop ke VPC
Gunakan Alibaba Cloud DNS PrivateZone untuk menyelesaikan hostname Hadoop di dalam VPC. Untuk instruksi penyiapan, lihat Resolver.
Langkah 2: Konfigurasikan metastore di hive-site.xml
Pilih jenis metastore yang sesuai dengan pengaturan Anda.
Metastore Hive
Verifikasi bahwa hive.metastore.uris di hive-site.xml mengarah ke alamat IP internal atau publik host Hive Anda:
<property>
<name>hive.metastore.uris</name>
<value>thrift://xx.yy.zz.mm:9083</value>
<description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>Jika Anda mengaturhive.metastore.uriske hostname alih-alih alamat IP, konfigurasikan Alibaba Cloud DNS PrivateZone untuk menyelesaikannya. Tanpa resolusi DNS, Ververica Platform (VVP) akan mengembalikanUnknownHostExceptionsaat menghubungkan ke metastore. Lihat Tambahkan rekaman DNS ke zona privat.
Alibaba Cloud DLF
Jika hive-site.xml berisi entri dlf.catalog.akMode, hapus entri tersebut sebelum melanjutkan. Jika dibiarkan, katalog Hive tidak dapat mengakses DLF.
Tambahkan properti berikut ke hive-site.xml:
<property>
<name>hive.imetastoreclient.factory.class</name>
<value>com.aliyun.datalake.metastore.hive2.DlfMetaStoreClientFactory</value>
</property>
<property>
<name>dlf.catalog.uid</name>
<value>${YOUR_DLF_CATALOG_UID}</value>
</property>
<property>
<name>dlf.catalog.endpoint</name>
<value>${YOUR_DLF_ENDPOINT}</value>
</property>
<property>
<name>dlf.catalog.region</name>
<value>${YOUR_DLF_CATALOG_REGION}</value>
</property>
<property>
<name>dlf.catalog.accessKeyId</name>
<value>${YOUR_ACCESS_KEY_ID}</value>
</property>
<property>
<name>dlf.catalog.accessKeySecret</name>
<value>${YOUR_ACCESS_KEY_SECRET}</value>
</property>| Parameter | Wajib | Deskripsi |
|---|---|---|
dlf.catalog.uid | Ya | ID akun Alibaba Cloud Anda. Temukan di halaman Pengaturan Keamanan. |
dlf.catalog.endpoint | Ya | Titik akhir layanan DLF. Gunakan titik akhir VPC untuk wilayah Anda, misalnya dlf-vpc.cn-hangzhou.aliyuncs.com. Untuk semua titik akhir, lihat Wilayah dan titik akhir yang didukung. Untuk akses lintas-VPC, lihat Bagaimana Realtime Compute for Apache Flink mengakses layanan lintas VPC? |
dlf.catalog.region | Ya | ID wilayah tempat DLF diaktifkan. Harus sesuai dengan wilayah dlf.catalog.endpoint. Lihat Wilayah dan titik akhir yang didukung. |
dlf.catalog.accessKeyId | Ya | ID AccessKey akun Alibaba Cloud Anda. Lihat Dapatkan Pasangan Kunci Akses. |
dlf.catalog.accessKeySecret | Ya | Rahasia AccessKey akun Alibaba Cloud Anda. Lihat Dapatkan Pasangan Kunci Akses. |
Langkah 3: Konfigurasikan penyimpanan tabel di hive-site.xml
Katalog Hive mendukung dua backend penyimpanan untuk data tabel: OSS dan OSS-HDFS.
OSS
Tambahkan properti berikut ke hive-site.xml:
<property>
<name>fs.oss.impl.disable.cache</name>
<value>true</value>
</property>
<property>
<name>fs.oss.impl</name>
<value>org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>${YOUR_OSS_WAREHOUSE_DIR}</value>
</property>
<property>
<name>fs.oss.endpoint</name>
<value>${YOUR_OSS_ENDPOINT}</value>
</property>
<property>
<name>fs.oss.accessKeyId</name>
<value>${YOUR_ACCESS_KEY_ID}</value>
</property>
<property>
<name>fs.oss.accessKeySecret</name>
<value>${YOUR_ACCESS_KEY_SECRET}</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>oss://${YOUR_OSS_BUCKET_DOMIN}</value>
</property>| Parameter | Wajib | Deskripsi |
|---|---|---|
hive.metastore.warehouse.dir | Ya | Direktori tempat data tabel disimpan. |
fs.oss.endpoint | Ya | Titik akhir OSS. Lihat Wilayah dan titik akhir. |
fs.oss.accessKeyId | Ya | ID AccessKey. Lihat Dapatkan Pasangan Kunci Akses. |
fs.oss.accessKeySecret | Ya | Rahasia AccessKey. Lihat Dapatkan Pasangan Kunci Akses. |
fs.defaultFS | Ya | Sistem file default untuk data tabel. Atur ke titik akhir HDFS bucket target, misalnya oss://oss-hdfs-bucket.cn-hangzhou.oss-dls.aliyuncs.com/. |
OSS-HDFS
Tambahkan properti berikut ke
hive-site.xml:Parameter Wajib Deskripsi hive.metastore.warehouse.dirYa Direktori tempat data tabel disimpan. fs.oss.endpointYa Titik akhir OSS. Lihat Wilayah dan titik akhir. fs.oss.accessKeyIdYa ID AccessKey. Lihat Dapatkan Pasangan Kunci Akses. fs.oss.accessKeySecretYa Rahasia AccessKey. Lihat Dapatkan Pasangan Kunci Akses. fs.defaultFSYa Sistem file default untuk data tabel. Atur ke titik akhir HDFS bucket target, misalnya oss://oss-hdfs-bucket.cn-hangzhou.oss-dls.aliyuncs.com/.<property> <name>fs.jindo.impl</name> <value>com.aliyun.jindodata.jindo.JindoFileSystem</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>${YOUR_OSS_WAREHOUSE_DIR}</value> </property> <property> <name>fs.oss.endpoint</name> <value>${YOUR_OSS_ENDPOINT}</value> </property> <property> <name>fs.oss.accessKeyId</name> <value>${YOUR_ACCESS_KEY_ID}</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>${YOUR_ACCESS_KEY_SECRET}</value> </property> <property> <name>fs.defaultFS</name> <value>oss://${YOUR_OSS_HDFS_BUCKET_DOMIN}</value> </property>(Opsional) Jika Anda berencana membaca tabel Hive berformat Parquet yang disimpan di OSS-HDFS, tambahkan konfigurasi berikut ke Realtime Compute for Apache Flink:
fs.oss.jindo.accessKeyId: ${YOUR_ACCESS_KEY_ID} fs.oss.jindo.accessKeySecret: ${YOUR_ACCESS_KEY_SECRET} fs.oss.jindo.endpoint: ${YOUR_JINODO_ENDPOINT} fs.oss.jindo.buckets: ${YOUR_JINDO_BUCKETS}Untuk detail parameter, lihat Tulis data ke OSS-HDFS.
Jika data Anda sudah disimpan di Realtime Compute for Apache Flink, lewati Langkah 2–3 dan langsung ke Buat katalog Hive.
Langkah 4: Unggah file konfigurasi ke OSS
Login ke Konsol OSS dan klik Buckets di panel navigasi kiri.
Klik nama bucket yang digunakan oleh ruang kerja Realtime Compute for Apache Flink Anda.
Buat folder
${hms}di pathoss://${bucket}/artifacts/namespaces/${ns}/. Untuk instruksinya, lihat Buat direktori.Realtime Compute for Apache Flink secara otomatis membuat direktori
/artifacts/namespaces/${ns}/saat ruang kerja disediakan. Jika direktori tersebut tidak muncul di Konsol OSS, unggah file apa pun di halaman Artifacts di Konsol pengembangan untuk memicu pembuatannya.Variabel Deskripsi ${bucket}Bucket yang digunakan oleh ruang kerja Realtime Compute for Apache Flink Anda ${ns}Nama ruang kerja tempat Anda membuat katalog Hive ${hms}Nama folder. Gunakan nama yang sama dengan katalog Hive yang akan Anda buat Di dalam
oss://${bucket}/artifacts/namespaces/${ns}/${hms}/, buat dua subdirektori: Setelah membuat kedua direktori, buka Files > Projects di Konsol OSS untuk memverifikasi struktur dan menyalin URL OSS.hive-conf-dir/— menyimpanhive-site.xmlhadoop-conf-dir/— menyimpan file konfigurasi Hadoop
Unggah
hive-site.xmlkehive-conf-dir/. Lihat Unggah objek.Unggah file-file berikut ke
hadoop-conf-dir/. Lihat Unggah objek.hive-site.xmlcore-site.xmlhdfs-site.xmlmapred-site.xmlFile lain yang diperlukan, seperti paket terkompresi yang digunakan oleh penerapan Hive
Buat katalog Hive
Setelah mengonfigurasi metadata Hive, buat katalog Hive dari Konsol atau dengan menjalankan pernyataan SQL. Metode Konsol direkomendasikan.
Setelah katalog Hive dibuat, Anda tidak dapat mengubah konfigurasinya. Untuk mengubah parameter apa pun, hapus katalog tersebut dan buat kembali.
Buat katalog Hive dari Konsol
Login ke Konsol Realtime Compute for Apache Flink. Temukan ruang kerja dan klik Console di kolom Actions.
Klik Catalogs.
Di halaman Catalog List, klik Create Catalog. Di kotak dialog, buka tab Built-in Catalog, pilih Hive di langkah Choose Catalog Type, lalu klik Next.
Di langkah Configure Catalog, atur parameter berikut:
Parameter Wajib Deskripsi catalog nameYa Nama katalog Hive hive-versionYa Versi metastore Hive. Didukung: 2.0.0–2.3.9, 3.1.0–3.1.3. Petakan versi yang terinstal: 2.0.X atau 2.1.X → 2.2.0; 2.2.X →2.2.0; 2.3.X →2.3.6; 3.1.X →3.1.2default-databaseYa Nama database default hive-conf-dirYa Path OSS ke direktori yang berisi hive-site.xml, dibuat di Langkah 4. Untuk penyimpanan yang dikelola sepenuhnya, unggah file sesuai permintaanhadoop-conf-dirYa Path OSS ke direktori yang berisi file konfigurasi Hadoop, dibuat di Langkah 4. Untuk penyimpanan yang dikelola sepenuhnya, unggah file sesuai permintaan hive-kerberosTidak Aktifkan autentikasi Kerberos dan asosiasikan kluster Hive yang telah terdaftar dengan Kerberos serta principal Kerberos. Lihat Daftarkan kluster Hive yang telah di-Kerberos Klik Confirm.
Di panel Catalogs di sisi kiri halaman Catalog List, verifikasi bahwa katalog baru muncul.
Buat katalog Hive dengan menjalankan pernyataan SQL
Di halaman Scripts, jalankan pernyataan berikut:
Parameter Wajib Deskripsi ${HMS Name}Ya Nama katalog Hive typeYa Jenis konektor. Atur ke hivedefault-databaseYa Nama database default hive-versionYa Versi metastore Hive. Didukung: 2.0.0–2.3.9, 3.1.0–3.1.3. Petakan versi yang terinstal: 2.0.X atau 2.1.X → 2.2.0; 2.2.X →2.2.0; 2.3.X →2.3.6; 3.1.X →3.1.2hive-conf-dirYa Path OSS ke direktori yang berisi hive-site.xml. Lihat Konfigurasikan metadata Hivehadoop-conf-dirYa Path OSS ke direktori yang berisi file konfigurasi Hadoop. Lihat Konfigurasikan metadata Hive CREATE CATALOG ${HMS Name} WITH ( 'type' = 'hive', 'default-database' = 'default', 'hive-version' = '<hive-version>', 'hive-conf-dir' = '<hive-conf-dir>', 'hadoop-conf-dir' = '<hadoop-conf-dir>' );Pilih pernyataan
CREATE CATALOGdan klik Run.
Setelah katalog dibuat, tabel di dalamnya tersedia di draft sebagai tabel hasil atau tabel dimensi tanpa deklarasi DDL. Nama tabel menggunakan format ${hive-catalog-name}.${hive-db-name}.${hive-table-name}.
Gunakan katalog Hive
Semua contoh di bawah menggunakan katalog bernama flinkexporthive dan database bernama flinkhive.
Buat tabel Hive
Metode UI
Dari Konsol:
Login ke Konsol Realtime Compute for Apache Flink, temukan ruang kerja, lalu klik Console di kolom Actions.
Klik Catalogs.
Di halaman Catalog List, temukan katalog dan klik View di kolom Actions.
Temukan database target dan klik View di kolom Actions.
Klik Create Table.
Di tab Built-in pada kotak dialog Create Table, pilih jenis tabel dari daftar drop-down Connection Type, pilih jenis konektor, lalu klik Next.
Masukkan pernyataan pembuatan tabel dan konfigurasikan parameter:
CREATE TABLE `${catalog_name}`.`${db_name}`.`${table_name}` ( id INT, name STRING ) WITH ( 'connector' = 'hive' );Klik OK.
Metode perintah SQL
Dengan menjalankan pernyataan SQL:
Di halaman Scripts, jalankan pernyataan CREATE TABLE, lalu pilih dan klik Run.

Contoh — buat flink_hive_test di database flinkhive di bawah flinkexporthive:
-- Buat tabel bernama flink_hive_test di database flinkhive di bawah katalog flinkexporthive.
CREATE TABLE `flinkexporthive`.`flinkhive`.`flink_hive_test` (
id INT,
name STRING
) WITH (
'connector' = 'hive'
);Ubah tabel Hive
Di halaman Scripts, jalankan pernyataan ALTER TABLE:
-- Tambahkan kolom ke tabel Hive.
ALTER TABLE `${catalog_name}`.`${db_name}`.`${table_name}`
ADD column type-column;
-- Hapus kolom dari tabel Hive.
ALTER TABLE `${catalog_name}`.`${db_name}`.`${table_name}`
DROP column;Contoh — tambahkan lalu hapus kolom color dari flink_hive_test:
-- Tambahkan bidang color ke tabel Hive.
ALTER TABLE `flinkexporthive`.`flinkhive`.`flink_hive_test`
ADD color STRING;
-- Hapus bidang color dari tabel Hive.
ALTER TABLE `flinkexporthive`.`flinkhive`.`flink_hive_test`
DROP color;Baca data dari tabel Hive
INSERT INTO ${other_sink_table}
SELECT ...
FROM `${catalog_name}`.`${db_name}`.`${table_name}`;Tulis data ke tabel Hive
INSERT INTO `${catalog_name}`.`${db_name}`.`${table_name}`
SELECT ...
FROM ${other_source_table};Hapus tabel Hive
Metode UI
Dari Konsol:
Login ke Konsol Realtime Compute for Apache Flink, temukan ruang kerja, lalu klik Console di kolom Actions.
Klik Catalogs.
Di panel Catalogs, navigasi ke tabel target di bawah database dan katalog target.
Di halaman detail tabel, klik Delete di kolom Actions.
Di dialog konfirmasi, klik OK.
Metode perintah SQL
Dengan menjalankan pernyataan SQL:
Di halaman Scripts, jalankan:
-- Hapus tabel Hive.
DROP TABLE `${catalog_name}`.`${db_name}`.`${table_name}`;Contoh:
-- Hapus tabel Hive.
DROP TABLE `flinkexporthive`.`flinkhive`.`flink_hive_test`;Lihat katalog Hive
Login ke Konsol Realtime Compute for Apache Flink, temukan ruang kerja, lalu klik Console di kolom Actions.
Klik Catalogs.
Di halaman Catalog List, periksa kolom Name dan Type untuk katalog tersebut.
Untuk melihat database dan tabel dalam katalog, klik View di kolom Actions.
Hapus katalog Hive
Menghapus katalog Hive tidak memengaruhi penerapan yang sedang berjalan. Namun, hal ini memengaruhi draft yang belum dipublikasikan dan penerapan yang perlu dihentikan sementara lalu dilanjutkan. Hapus katalog hanya jika benar-benar diperlukan.
Hapus katalog Hive dari Konsol
Login ke Konsol Realtime Compute for Apache Flink, temukan ruang kerja, lalu klik Console di kolom Actions.
Klik Catalogs.
Di halaman Catalog List, temukan katalog dan klik Delete di kolom Actions.
Di dialog konfirmasi, klik Delete.
Verifikasi bahwa katalog tidak lagi muncul di panel Catalogs.
Hapus katalog Hive dengan menjalankan pernyataan SQL
Di halaman Scripts, jalankan:
DROP CATALOG ${HMS Name};${HMS Name}adalah nama katalog yang ditampilkan di Konsol pengembangan Realtime Compute for Apache Flink.Klik kanan pernyataan tersebut dan pilih Run dari menu pintasan.
Verifikasi bahwa katalog tidak lagi muncul di panel Catalogs.