ApsaraDB for SelectDB mendukung kueri federasi dan dapat mengintegrasikan sumber data eksternal seperti danau data, database, serta file jarak jauh untuk analisis data yang efisien. Topik ini menjelaskan cara mengintegrasikan sumber data Hive dengan SelectDB menggunakan katalog untuk melakukan analisis federasi pada sumber data Hive.
Prasyarat
Semua node dalam kluster Hive harus terhubung ke instance SelectDB.
Semua node dalam kluster Hive harus berada di virtual private cloud (VPC) yang sama dengan instance SelectDB. Jika node dalam kluster sumber data berada di VPC yang berbeda, Anda harus menghubungkan node tersebut ke instance SelectDB. Untuk informasi lebih lanjut, lihat Apa yang harus saya lakukan jika koneksi gagal dibuat antara instance ApsaraDB for SelectDB dan sumber data?
Alamat IP semua node dalam kluster Hive harus ditambahkan ke daftar putih alamat IP instance SelectDB. Untuk informasi lebih lanjut, lihat Konfigurasi daftar putih alamat IP.
Alamat IP dalam VPC tempat instance SelectDB berada harus ditambahkan ke daftar putih alamat IP kluster Hive jika mekanisme daftar putih didukung untuk kluster Hive.
Untuk mendapatkan alamat IP instance SelectDB dalam VPC tempat instance SelectDB berada, Anda dapat menjalankan operasi yang disediakan di Bagaimana cara melihat alamat IP dalam VPC tempat instance ApsaraDB SelectDB saya berada?
Untuk mendapatkan alamat IP publik instance SelectDB, Anda dapat menjalankan perintah ping untuk mengakses titik akhir publik instance SelectDB dan mendapatkan alamat IP instance tersebut.
Jika kluster Hive Anda dibangun di atas Sistem File Terdistribusi Hadoop (HDFS), port berikut harus diaktifkan untuk HDFS agar dapat mentransfer data antara kluster Hive dan SelectDB:
Port yang ditentukan oleh parameter
hive.metastore.uris. Nilai default: 9083.Port yang ditentukan oleh parameter
dfs.namenode.rpc-address. Nilai default: 8020.Port yang ditentukan oleh parameter
dfs.datanode.address. Nilai default: 9866.
Anda harus memiliki pengetahuan dasar tentang katalog dan memahami operasi yang dapat dilakukan pada katalog. Untuk informasi lebih lanjut, lihat Danau data terpadu.
Catatan penggunaan
Hive 1, Hive 2, dan Hive 3 didukung.
Tabel yang dikelola, tabel eksternal, dan beberapa tampilan Hive didukung.
Metadata Hive, Iceberg, dan Hudi yang disimpan dalam metastore Hive dapat diidentifikasi.
ApsaraDB for SelectDB hanya dapat membaca data dalam katalog eksternal.
Lingkungan sampel
Dalam contoh ini, sistem operasi Linux digunakan, dan kueri federasi dilakukan di ApsaraDB for SelectDB untuk menanyakan tabel test_db.test_t dalam kluster Hive yang dibangun di atas HDFS. Anda dapat menyesuaikan pengaturan parameter dalam contoh sesuai dengan sistem operasi dan lingkungan Anda. Parameter lingkungan sampel:
Skenario bisnis: non-ketersediaan tinggi (HA)
Tipe kluster Hive: HDFS
Database sumber: test_db
Tabel sumber: test_t
Siapkan data sumber
Masuk ke kluster Hive yang datanya ingin Anda tanyakan.
Buat database bernama testdb.
CREATE database if NOT EXISTS test_db;Buat tabel bernama Hive_t.
CREATE TABLE IF NOT EXISTS test_t ( id INT, name STRING, age INT );Masukkan data ke dalam tabel.
--Masukkan data ke dalam tabel. INSERT INTO TABLE test_t VALUES (1, 'Alice', 25), (2, 'Bob', 30), (3, 'Charlie', 35), (4, 'David', 40), (5, 'Eve', 45);
Prosedur
Langkah 1: Hubungkan ke instance ApsaraDB for SelectDB
Hubungkan ke instance SelectDB. Untuk informasi lebih lanjut, lihat Hubungkan ke instance ApsaraDB for SelectDB menggunakan klien MySQL.
Langkah 2: Buat katalog Hive
Anda dapat membuat katalog eksternal di SelectDB untuk mengintegrasikan sumber data eksternal. Parameter katalog bervariasi sesuai dengan skenario bisnis. Pilih sintaks yang sesuai dan konfigurasikan parameter yang diperlukan berdasarkan skenario bisnis Anda.
Setelah Anda membuat katalog, ApsaraDB for SelectDB secara otomatis menyinkronkan database dan tabel dalam katalog. ApsaraDB for SelectDB memetakan tipe data kolom dalam katalog ke tipe data ApsaraDB for SelectDB. Untuk informasi lebih lanjut, lihat bagian "Pemetaan tipe data kolom" dari topik ini.
Hive berbasis HDFS
Sintaks
CREATE CATALOG <catalog_name> PROPERTIES (
'type'='<type>',
'hive.metastore.uris' = '<hive.metastore.uris>',
'hadoop.username' = '<hadoop.username>',
'dfs.nameservices'='<hadoop.username>',
'dfs.ha.namenodes.your-nameservice'='<dfs.ha.namenodes.your-nameservice>',
'dfs.namenode.rpc-address.your-nameservice.nn1'='<dfs.namenode.rpc-address.your-nameservice.nn1>',
'dfs.namenode.rpc-address.your-nameservice.nn2'='<dfs.namenode.rpc-address.your-nameservice.nn2>',
'dfs.client.failover.proxy.provider.your-nameservice'='<dfs.client.failover.proxy.provider.your-nameservice>'
);Parameter
Skenario Non-HA
Parameter | Diperlukan | Deskripsi |
catalog_name | Ya | Nama katalog. |
type | Ya | Tipe katalog. Atur nilainya menjadi hms. |
hive.metastore.uris | Ya | URI metastore Hive.
|
Skenario HA
Parameter | Diperlukan | Deskripsi |
catalog_name | Ya | Nama katalog. |
type | Ya | Tipe katalog. Atur nilainya menjadi hms. |
hive.metastore.uris | Ya | URI metastore Hive.
|
hadoop.username | Tidak | Nama pengguna yang digunakan untuk masuk ke HDFS. |
dfs.nameservices | Tidak | Nama NameService. Nilainya harus sama dengan nilai parameter dfs.nameservices dalam file konfigurasi hdfs-site.xml yang digunakan oleh lingkungan Hive yang ada. |
dfs.ha.namenodes.[nameservice ID] | Tidak | ID NameNode. Nilainya harus sama dengan nilai parameter yang sesuai dalam file konfigurasi hdfs-site.xml yang digunakan oleh lingkungan Hive yang ada. |
dfs.namenode.rpc-address.[nameservice ID].[name node ID] | Tidak | Alamat remote procedure call (RPC) NameNode. Jumlah alamat RPC harus sama dengan jumlah NameNode. Nilainya harus sama dengan nilai parameter yang sesuai dalam file konfigurasi hdfs-site.xml yang digunakan oleh lingkungan Hive yang ada. |
dfs.client.failover.proxy.provider.[nameservice ID] | Tidak | Kelas Java yang mengimplementasikan koneksi NameNode aktif untuk klien HDFS. Dalam kebanyakan kasus, atur nilainya menjadi |
Perintah sampel untuk skenario non-HA
CREATE CATALOG hive_catalog PROPERTIES (
'type'='hms',
'hive.metastore.uris' = 'thrift://master-1-1.c-7fa25a1a****.cn-hangzhou.emr.aliyuncs.com:9083'
);Hive berbasis OSS
Sintaks
Sintaks untuk membuat katalog Hive berbasis Layanan Penyimpanan Objek (OSS) sama dengan sintaks untuk membuat katalog Hive berbasis HDFS. Satu-satunya perbedaan adalah mereka menggunakan parameter yang diperlukan yang berbeda.
Parameter
Parameter | Diperlukan | Deskripsi |
type | Ya | Tipe katalog. Atur nilainya menjadi hms. |
hive.metastore.uris | Ya | URI metastore Hive.
|
oss.endpoint | Ya | Titik akhir |
oss.access_key | Ya |
|
oss.secret_key | Ya |
|
Perintah sampel
CREATE CATALOG hive_catalog PROPERTIES (
"type"="hms",
"hive.metastore.uris" = "thrift://172.0.0.1:9083",
"oss.endpoint" = "oss-cn-beijing.aliyuncs.com",
"oss.access_key" = "ak",
"oss.secret_key" = "sk"
);Langkah 3: Lihat katalog
Anda dapat mengeksekusi pernyataan berikut untuk memeriksa apakah katalog telah dibuat:
SHOW CATALOGS; --Periksa apakah katalog telah dibuat.+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| CatalogId | CatalogName | Type | IsCurrent | CreateTime | LastUpdateTime | Comment |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| 436009309195 | hive_catalog | hms | | 2024-07-19 17:09:08.058 | 2024-07-19 18:04:37 | |
| 0 | internal | internal | yes | UNRECORDED | NULL | Doris internal catalog |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+Langkah 4: Lihat data dalam database dan tabel Hive
Lihat database dan tabel Hive dalam katalog eksternal yang Anda buat.
CatatanSetelah Anda terhubung ke instance ApsaraDB for SelectDB, katalog internal digunakan secara default.
Beralih ke katalog eksternal yang ingin Anda kelola.
SWITCH hive_catalog;Lihat data.
Setelah Anda beralih ke katalog eksternal, Anda dapat mengakses data dalam katalog eksternal dengan cara yang sama seperti Anda menggunakan katalog internal. Contoh:
Untuk melihat daftar database, eksekusi pernyataan
SHOW DATABASES;.Untuk beralih ke database yang ditentukan, eksekusi pernyataan
USE test_db;.Untuk melihat daftar tabel, eksekusi pernyataan
SHOW TABLES;.Untuk melihat data dalam tabel yang ditentukan, eksekusi pernyataan
SELECT * FROM test_t;.
Lihat database dan tabel Hive dalam katalog internal.
--Lihat data dalam tabel test_t dari database test_db di katalog hive_catalog. SELECT * FROM hive_catalog.test_db.test_t;
Operasi terkait: Migrasi data
Setelah sumber data Hive diintegrasikan, Anda dapat mengeksekusi pernyataan INSERT INTO untuk memigrasi data historis dari sumber data Hive ke SelectDB. Untuk informasi lebih lanjut, lihat Gunakan INSERT INTO untuk mengimpor data.
Pemetaan tipe data kolom
Tipe data metastore Hive berikut berlaku untuk Hive, Iceberg, dan Hudi.
Beberapa tipe data metastore Hive dan Cloud Database SelectDB Edition dengan struktur kompleks dapat bersarang. Contoh sarang:
array<type>:
array<map<string, int>>map<KeyType, ValueType>:
map<string, array<int>>struct<col1: Type1, col2: Type2, ...>:
struct<col1: array<int>, col2: map<int, date>>
Tipe data metastore Hive | Tipe data Cloud Database SelectDB Edition |
boolean | boolean |
tinyint | tinyint |
smallint | smallint |
int | int |
bigint | bigint |
date | date |
timestamp | datetime |
float | float |
double | double |
char | char |
varchar | varchar |
decimal | decimal |
array<type> | array<type> |
map<KeyType, ValueType> | map<KeyType, ValueType> |
struct<col1: Type1, col2: Type2, ...> | struct<col1: Type1, col2: Type2, ...> |
other | tidak didukung |