All Products
Search
Document Center

Hologres:Akses data OSS dengan Hive Metastore

Last Updated:Sep 12, 2026

Mulai versi 2.2, Hologres mendukung Hive Metastore (HMS) sebagai sumber metadata untuk data lake yang dibangun di atas Object Storage Service (OSS). Jika data lake Anda berjalan pada kluster E-MapReduce (EMR) dengan OSS atau OSS-HDFS sebagai lapisan penyimpanan, Anda dapat menghubungkan Hologres ke HMS untuk mengkueri data OSS secara langsung menggunakan SQL—tanpa perlu memigrasi atau menyalin data.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Layanan OSS telah diaktifkan. Lihat Mulai Cepat Konsol.

  • Memiliki kluster data lake EMR dengan data uji yang telah dimuat. Lihat 在EMR Hive或Spark中访问OSS-HDFS dan Create a cluster. Kluster tersebut harus memenuhi semua kondisi berikut:

    • Versi Hive 3.1.3 atau lebih baru

    • Otentikasi Kerberos dinonaktifkan

    • Metadata diatur ke Self-managed RDS atau Built-in MySQL

  • Memiliki instans Hologres dengan akselerasi data lake yang diaktifkan dan database yang telah dibuat. Lihat Purchase a Hologres instance dan Create a database.

    Untuk mengaktifkan akselerasi data lake, buka Konsol Hologres. Pada kolom Actions instans target, klik Lake Acceleration dan konfirmasi.
  • Menyiapkan koneksi jaringan antara Hologres dan kluster EMR. Karena Hologres dideploy di jaringan klasik dan EMR berjalan di virtual private cloud (VPC), diperlukan titik akhir balik (reverse endpoint) agar kedua layanan dapat berkomunikasi. Kirim permintaan koneksi jaringan. Tim dukungan Hologres kemudian akan memandu Anda melalui langkah-langkah berikut:

    1. Login ke Konsol VPC dan buat reverse endpoint. Lihat Access Alibaba Cloud services.

    2. Untuk parameter Type, pilih Other Endpoint Services dan masukkan nama layanan titik akhir untuk wilayah tempat kluster EMR Anda berada:

      Wilayah

      Nama layanan titik akhir

      China (Beijing)

      com.aliyuncs.privatelink.cn-beijing.epsrv-2zeokrydzjd6kx3cbwmb

      China (Shanghai)

      com.aliyuncs.privatelink.cn-shanghai.epsrv-uf61fvlfwta7f7dv9n3x

      China (Zhangjiakou)

      com.aliyuncs.privatelink.cn-zhangjiakou.epsrv-8vbno4k4wwvys0eg2swp

    Jika wilayah Anda tidak tercantum dalam daftar, tim Hologres akan membuat layanan titik akhir dan memberikan namanya setelah Anda mengirim permintaan. Koneksi menggunakan alamat IP. Jika alamat IP kluster EMR berubah, konfigurasi ulang koneksi tersebut.

Batasan

  • Instans Hologres secondary read-only tidak mendukung akselerasi data lake.

  • UPDATE, DELETE, dan TRUNCATE tidak didukung pada tabel eksternal.

  • Auto Load (pemetaan batch tabel eksternal dari HMS) tidak didukung.

  • Kluster EMR dengan otentikasi Kerberos yang diaktifkan tidak didukung.

Hubungkan Hologres ke HMS

Hologres menyediakan dua cara untuk terhubung ke HMS. Pilih salah satu berdasarkan versi instans Anda dan tingkat kontrol yang Anda butuhkan atas pemetaan kolom.

  • Metode 1: external database (direkomendasikan). Memerlukan Hologres V3.0 atau lebih baru. Database eksternal memetakan setiap database dan tabel HMS ke database eksternal, skema, dan tabel eksternal di Hologres sekaligus, sehingga Anda dapat mengkueri data dengan nama tiga bagian alih-alih membuat satu tabel eksternal dalam satu waktu.

  • Metode 2: hive_fdw. Gunakan metode ini pada Hologres V2.2 atau lebih baru tetapi sebelum V3.0, atau ketika Anda perlu memetakan subset kolom atau mengganti nama tabel.

Metode 1: Gunakan database eksternal (direkomendasikan)

  1. Hubungkan ke instans Hologres Anda dan buat database eksternal. Langkah ini memerlukan izin superuser.

    Untuk sintaks lengkap, lihat CREATE EXTERNAL DATABASE.

    CREATE EXTERNAL DATABASE <EXTERNAL_DATABASE_NAME>
      owner '<ACCOUNT_NAME>'
      metastore_type 'hms'
      catalog_type 'hive'
      hive_metastore_uris 'thrift://<HIVE_METASTORE_IP>:<PORT>'
      metadata_cache_ttl_sec '600'
      metadata_cache_update_interval_sec '60'
      metadata_refresh_interval_sec '7200'
      oss_endpoint 'oss-<REGION_ID>-internal.aliyuncs.com'
      table_count_limitation_per_schema '2000'
      comment '<EXTERNAL_DATABASE_COMMENT>';

    Parameter

    Deskripsi

    Contoh

    external_database_name

    Nama database eksternal.

    catalog_hive

    owner

    Akun Hologres yang memiliki database eksternal.

    p4_<ACCOUNT_ID>

    metastore_type

    Jenis layanan metadata. Atur ke hms untuk Hive Metastore.

    hms

    catalog_type

    Jenis katalog. Atur ke hive untuk katalog Hive.

    hive

    hive_metastore_uris

    URI Hive Metastore. Format: thrift://<HIVE_METASTORE_IP>:<PORT>. Port default adalah 9083.

    thrift://10.0.0.1:9083

    metadata_cache_ttl_sec

    Opsional. Durasi validitas metadata yang di-cache, dalam detik.

    600 (default)

    metadata_cache_update_interval_sec

    Opsional. Interval antara pembaruan cache metadata, dalam detik.

    60 (default)

    metadata_refresh_interval_sec

    Opsional. Interval antara penyegaran penuh metadata, dalam detik.

    7200 (default)

    oss_endpoint

    Titik akhir OSS. Untuk OSS native, gunakan titik akhir internal untuk performa lebih baik.

    oss-cn-beijing-internal.aliyuncs.com

    table_count_limitation_per_schema

    Opsional. Jumlah maksimum tabel yang dimuat per skema.

    2000 (default)

    comment

    Opsional. Deskripsi database eksternal.

    holo-emr-hive

    Interval cache dan batas jumlah tabel di atas merupakan nilai contoh. Sesuaikan nilainya dengan frekuensi pembaruan metadata dan jumlah tabel di HMS Anda.
  2. (Opsional) Buat pemetaan pengguna.

    Pemetaan pengguna menyediakan kredensial yang digunakan akun Hologres tertentu untuk membaca dari OSS. Untuk detailnya, lihat CREATE USER MAPPING.

    CREATE USER MAPPING FOR <ACCOUNT_NAME>
    EXTERNAL DATABASE <EXTERNAL_DATABASE_NAME>
    OPTIONS (
      oss_access_id  '<ACCESS_KEY_ID>',
      oss_access_key '<ACCESS_KEY_SECRET>'
    );
  3. Kueri tabel eksternal.

    Setelah database eksternal tersedia, referensikan tabel apa pun dengan nama tiga bagian: database eksternal, database Hive, tabel Hive.

    Tabel non-partisi:

    SELECT *
    FROM <EXTERNAL_DATABASE_NAME>.<HIVE_DATABASE_NAME>.<HIVE_TABLE_NAME>;

    Tabel partisi: filter berdasarkan kunci partisi dalam klausa WHERE.

    SELECT *
    FROM <EXTERNAL_DATABASE_NAME>.<HIVE_DATABASE_NAME>.<HIVE_PARTITION_TABLE_NAME>
    WHERE <PARTITION_KEY> = '<PARTITION_VALUE>';

Metode 2: Gunakan hive_fdw

Langkah 1: Buat ekstensi

Jalankan perintah SQL berikut untuk menginstal pembungkus data asing (FDW) hive_fdw. Operasi ini memerlukan izin superuser dan hanya perlu dijalankan sekali per database.

CREATE EXTENSION IF NOT EXISTS hive_fdw;

Langkah 2: Buat server asing

Buat server asing yang mengarah ke instans HMS dan penyimpanan OSS Anda.

Sebelum menjalankan perintah, kumpulkan nilai-nilai berikut:

  • Alamat IP HMS: Di Konsol E-MapReduce, klik Node Management untuk kluster Anda. Pada tab Node Management, temukan Internal IP node master.

  • Titik akhir OSS: Di Konsol OSS, buka halaman ikhtisar bucket dan periksa area Access Ports.

CREATE SERVER IF NOT EXISTS <SERVER_NAME> FOREIGN DATA WRAPPER hive_fdw
OPTIONS (
  hive_metastore_uris 'thrift://<HIVE_METASTORE_IP>:<PORT>',
  oss_endpoint '<OSS_ENDPOINT>'
);

Parameter

Wajib

Deskripsi

Contoh

server_name

Ya

Nama kustom untuk server asing.

hive_server

hive_metastore_uris

Ya

URI Hive Metastore. Format: thrift://<HIVE_METASTORE_IP>:<PORT>. Port default adalah 9083.

thrift://172.16.0.250:9083

oss_endpoint

Ya

Titik akhir OSS. Untuk OSS native, gunakan titik akhir internal untuk performa lebih baik. Untuk OSS-HDFS, hanya akses jaringan internal yang didukung.

Lihat contoh di bawah

Untuk oss_endpoint, pilih berdasarkan jenis penyimpanan Anda:

  • OSS native: Gunakan titik akhir internal.

    oss-cn-shanghai-internal.aliyuncs.com
  • OSS-HDFS: Hanya akses jaringan internal yang didukung.

    <BUCKET_NAME>.cn-beijing.oss-dls.aliyuncs.com

Langkah 3: (Opsional) Buat pemetaan pengguna

Pemetaan pengguna mengontrol akun Hologres mana yang dapat mengakses data eksternal melalui server asing. Misalnya, pemilik server asing dapat memberikan akses pengguna Resource Access Management (RAM) ke data OSS.

Untuk detail sintaks CREATE USER MAPPING, lihat dokumentasi PostgreSQL.

-- Berikan akses pengguna saat ini ke server asing
CREATE USER MAPPING FOR current_user SERVER <SERVER_NAME> OPTIONS (
  dlf_access_id  '<ACCESS_KEY_ID>',
  dlf_access_key '<ACCESS_KEY_SECRET>',
  oss_access_id  '<ACCESS_KEY_ID>',
  oss_access_key '<ACCESS_KEY_SECRET>'
);

-- Berikan akses pengguna RAM (123xxx) ke server asing
CREATE USER MAPPING FOR "p4_123xxx" SERVER <SERVER_NAME> OPTIONS (
  dlf_access_id  '<ACCESS_KEY_ID>',
  dlf_access_key '<ACCESS_KEY_SECRET>',
  oss_access_id  '<ACCESS_KEY_ID>',
  oss_access_key '<ACCESS_KEY_SECRET>'
);

-- Hapus pemetaan pengguna
DROP USER MAPPING FOR CURRENT_USER SERVER <SERVER_NAME>;
DROP USER MAPPING FOR "p4_123xxx" SERVER <SERVER_NAME>;

Langkah 4: Buat tabel asing

Hologres menyediakan dua perintah untuk membuat tabel asing:

Perintah

Paling cocok untuk

CREATE FOREIGN TABLE

Jumlah tabel yang sedikit, atau ketika Anda perlu memetakan subset kolom atau memberikan nama tabel kustom.

IMPORT FOREIGN SCHEMA

Pemetaan batch beberapa tabel dari skema eksternal.

Hologres mendukung tabel partisi di OSS. Jenis kunci partisi yang didukung adalah TEXT, VARCHAR, dan INT.
Dengan CREATE FOREIGN TABLE: definisikan bidang partisi sebagai kolom biasa, karena perintah ini memetakan skema tanpa menyimpan data.
Dengan IMPORT FOREIGN SCHEMA: sistem menangani pemetaan bidang secara otomatis.
Jika nama tabel eksternal bentrok dengan tabel internal Hologres yang sudah ada, IMPORT FOREIGN SCHEMA melewatkan tabel tersebut. Gunakan CREATE FOREIGN TABLE untuk memetakannya dengan nama berbeda.
-- Buat satu tabel asing
CREATE FOREIGN TABLE <HOLO_SCHEMA_NAME>.<TABLE_NAME>
(
  column_name data_type
  [, ...]
)
SERVER <SERVER_NAME>
OPTIONS (
  schema_name '<HIVE_DATABASE_NAME>',
  table_name  '<HIVE_TABLE_NAME>'
);

-- Impor beberapa tabel asing secara batch
IMPORT FOREIGN SCHEMA <HIVE_DATABASE_NAME>
[
  { LIMIT TO | EXCEPT }
  ( table_name [, ...] )
]
FROM SERVER <SERVER_NAME>
INTO <HOLO_SCHEMA_NAME>
OPTIONS (
  if_table_exist        'update',
  if_unsupported_type   'error'
);

Langkah 5: Kueri tabel asing

Setelah membuat tabel asing, kueri langsung untuk membaca data dari OSS.

Tabel non-partisi:

SELECT * FROM <HOLO_SCHEMA_NAME>.<TABLE_NAME>;

Tabel partisi:

SELECT * FROM <HOLO_SCHEMA_NAME>.<PARTITION_TABLE_NAME>
WHERE <PARTITION_KEY> = '<PARTITION_VALUE>';