全部产品
Search
文档中心

ApsaraDB for SelectDB:Sumber data Hive

更新时间:Jul 30, 2025

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.

  • 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

  1. Masuk ke kluster Hive yang datanya ingin Anda tanyakan.

  2. Buat database bernama testdb.

    CREATE database if NOT EXISTS test_db;
  3. Buat tabel bernama Hive_t.

    CREATE TABLE IF NOT EXISTS test_t (
        id INT,
        name STRING,
        age INT
    );
  4. 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.

  • URI dalam format thrift://<IP address of the Hive metastore>:<Port number>.

  • Nomor port default adalah 9083.

  • Anda dapat menjalankan perintah SET hive.metastore.uris pada klien Hive untuk mendapatkan URI.

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.

  • URI dalam format thrift://<IP address of the Hive metastore>:<Port number>.

  • Nomor port default adalah 9083.

  • Anda dapat menjalankan perintah SET hive.metastore.uris pada klien Hive untuk mendapatkan URI.

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 org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider.

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.

  • URI dalam format thrift://<IP address of the Hive metastore>:<Port number>.

  • Nomor port default adalah 9083.

  • Anda dapat menjalankan perintah SET hive.metastore.uris pada klien Hive untuk mendapatkan URI.

oss.endpoint

Ya

Titik akhir endpoint yang digunakan untuk mengakses data OSS. Untuk informasi lebih lanjut tentang cara mendapatkan titik akhir, lihat Wilayah dan titik akhir.

oss.access_key

Ya

ID AccessKey yang digunakan untuk mengakses data OSS.

oss.secret_key

Ya

Rahasia AccessKey yang digunakan untuk mengakses data OSS.

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.

    Catatan

    Setelah Anda terhubung ke instance ApsaraDB for SelectDB, katalog internal digunakan secara default.

    1. Beralih ke katalog eksternal yang ingin Anda kelola.

      SWITCH hive_catalog;
    2. 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

Catatan
  • 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