All Products
Search
Document Center

Hologres:Akselerasi data lake OSS menggunakan DLF

Last Updated:Aug 21, 2026

Hologres mempercepat kueri pada data lake OSS Anda dengan memanfaatkan Alibaba Cloud Data Lake Formation (DLF) dan Object Storage Service (OSS) untuk akses data yang fleksibel serta pemrosesan yang efisien. Topik ini menjelaskan cara menggunakan DLF 1.0 untuk membaca dari dan menulis ke OSS di Hologres.

Prasyarat

Catatan penggunaan

  • Saat mengekspor data dari Hologres ke OSS, Anda hanya dapat menjalankan perintah INSERT INTO. Perintah INSERT ON CONFLICT, UPDATE, dan DELETE tidak didukung.

  • Anda hanya dapat menulis data kembali ke OSS dengan Hologres V1.3 atau versi yang lebih baru. Fitur ini hanya mendukung format ORC, Parquet, CSV, dan SequenceFile.

  • Akselerasi data lake tidak didukung pada instans secondary read-only.

  • Pernyataan IMPORT FOREIGN SCHEMA mendukung pengimporan tabel partisi yang disimpan di OSS. Hologres dapat mengkueri maksimal 512 partisi sekaligus. Tambahkan filter partisi untuk memastikan satu kueri tidak melebihi batas ini.

  • Saat mengkueri data di data lake, partisi yang ditentukan dalam kueri dimuat dari tabel eksternal ke memori dan cache Hologres untuk komputasi. Untuk memastikan pengalaman kueri yang lancar, jumlah data yang diakses oleh filter partisi dalam satu kueri tidak boleh melebihi 200 GB.

  • Perintah UPDATE, DELETE, dan TRUNCATE tidak didukung untuk tabel eksternal.

  • Versi baru DLF tidak mendukung akselerasi data lake OSS. Fitur ini hanya tersedia di DLF 1.0 (DLF-Legacy).

Prosedur

Konfigurasikan lingkungan

  1. Aktifkan konfigurasi backend DLF_FDW untuk instans Hologres Anda.

    Buka Konsol Hologres. Di halaman Instances atau Instance Details, temukan instans target lalu klik Actions di kolom Lake Acceleration. Setelah Anda mengonfirmasi operasi, sistem secara otomatis mengonfigurasi DLF_FDW dan me-restart instans. Layanan tersedia setelah instans direstart.

    Catatan

    Fitur self-service untuk mengaktifkan konfigurasi backend DLF_FDW di Konsol Hologres sedang diluncurkan bertahap. Jika Anda tidak melihat tombol Lake Acceleration, lihat Common errors when preparing for an upgrade atau bergabunglah dengan grup DingTalk Hologres untuk memberikan masukan. Untuk informasi selengkapnya, lihat How do I get more online support?.

    Setelah Anda mengaktifkan DLF_FDW, fitur ini menggunakan sumber daya sistem yang ada (saat ini 1 core dan 4 GB memori) secara default. Tidak diperlukan pembelian sumber daya tambahan.

  2. Buat ekstensi.

    Superuser harus menjalankan pernyataan berikut sekali per database untuk membuat ekstensi. Hal ini memungkinkan Anda membaca data dari OSS menggunakan DLF 1.0.

    CREATE EXTENSION IF NOT EXISTS dlf_fdw;
  3. Buat server eksternal.

    Penting

    Anda harus menggunakan akun superuser untuk membuat server eksternal guna menghindari masalah izin.

    Hologres mendukung fitur Multi-Catalog DLF 1.0. Jika Anda hanya memiliki satu kluster EMR, Anda dapat menggunakan katalog default DLF 1.0. Jika Anda memiliki beberapa kluster EMR, Anda dapat menggunakan data catalog kustom untuk menghubungkan instans Hologres Anda ke kluster EMR yang berbeda. Anda juga dapat memilih native OSS atau OSS-HDFS sebagai sumber data. Bagian berikut menjelaskan konfigurasinya secara detail.

    • Gunakan katalog default DLF 1.0 dan penyimpanan native OSS untuk membuat server. Sintaks contoh:

      -- Lihat server yang sudah ada. meta_warehouse_server dan odps_server adalah server bawaan dan tidak dapat dimodifikasi atau dihapus.
      SELECT * FROM pg_foreign_server;
      
      -- Hapus server yang sudah ada.
      DROP SERVER SERVER_NAME CASCADE;
      
      -- Buat server.
      CREATE SERVER IF NOT EXISTS SERVER_NAME FOREIGN DATA WRAPPER dlf_fdw OPTIONS (
          dlf_region '<span class="var-span" contenteditable="true" data-var="REGION_ID">REGION_ID'</span>,
          dlf_endpoint 'dlf-share.<span class="var-span" contenteditable="true" data-var="REGION_ID">REGION_ID.aliyuncs.com'</span>,
          oss_endpoint 'oss-<span class="var-span" contenteditable="true" data-var="REGION_ID">REGION_ID-internal.aliyuncs.com'</span>
      );
    • Gunakan OSS-HDFS sebagai penyimpanan data lake.

      • Tentukan titik akhir OSS-HDFS.

        Di Konsol OSS, Anda dapat menemukan titik akhir di halaman ikhtisar bucket tempat OSS-HDFS diaktifkan.

        Di tabel port akses, temukan titik akhir di kolom Bucket domain yang sesuai dengan baris HDFS service. Titik akhir tersebut memiliki format <BucketName>.cn-hangzhou.oss-dls.aliyuncs.com.

      • Buat server eksternal dan konfigurasikan titik akhirnya.

        Setelah Anda mengonfirmasi nama domain bucket, Anda dapat mengonfigurasi opsi DLF_FDW OSS_Endpoint di Hologres. Contoh sintaksnya sebagai berikut.

        CREATE EXTENSION IF NOT EXISTS dlf_fdw;
        
        CREATE SERVER IF NOT EXISTS SERVER_NAME FOREIGN DATA WRAPPER dlf_fdw OPTIONS (
            dlf_region 'REGION_ID',
            dlf_endpoint 'dlf-share.REGION_ID.aliyuncs.com',
            oss_endpoint 'BUCKET_NAME.REGION_ID.oss-dls.aliyuncs.com' -- Titik akhir bucket OSS-HDFS.
        );
      • Parameter

        Parameter

        Deskripsi

        Contoh

        SERVER_NAME

        Nama kustom server.

        dlf_server

        dlf_region

        Wilayah tempat DLF 1.0 berada.

        • China (Beijing): cn-beijing.

        • China (Hangzhou): cn-hangzhou.

        • China (Shanghai): cn-shanghai.

        • China (Shenzhen): cn-shenzhen.

        • China (Zhangjiakou): cn-zhangjiakou.

        • Singapura: ap-southeast-1.

        • Jerman (Frankfurt): eu-central-1.

        • AS (Virginia): us-east-1.

        • Indonesia (Jakarta): ap-southeast-5.

        cn-hangzhou

        dlf_endpoint

        Kami menyarankan Anda menggunakan titik akhir internal DLF 1.0 untuk kinerja akses yang lebih baik.

        • China (Beijing): dlf-share.cn-beijing.aliyuncs.com.

        • China (Hangzhou): dlf-share.cn-hangzhou.aliyuncs.com

        • China (Shanghai): dlf-share.cn-shanghai.aliyuncs.com.

        • China (Shenzhen): dlf-share.cn-shenzhen.aliyuncs.com.

        • China (Zhangjiakou): dlf-share.cn-zhangjiakou.aliyuncs.com.

        • Singapura: dlf-share.ap-southeast-1.aliyuncs.com.

        • Jerman (Frankfurt): dlf-share.eu-central-1.aliyuncs.com.

        • AS (Virginia): dlf-share.us-east-1.aliyuncs.com.

        • Indonesia (Jakarta): dlf-share.ap-southeast-5.aliyuncs.com.

        dlf-share.cn-shanghai.aliyuncs.com

        oss_endpoint

        • Untuk penyimpanan native OSS, kami menyarankan Anda menggunakan titik akhir internal OSS untuk kinerja akses yang lebih baik.

        • OSS-HDFS hanya mendukung akses jaringan internal.

        • OSS

          oss-cn-shanghai-internal.aliyuncs.com
        • OSS-HDFS

          cn-hangzhou.oss-dls.aliyuncs.com
  4. (Opsional) Buat pemetaan pengguna.

    Hologres memungkinkan Anda menjalankan perintah CREATE USER MAPPING untuk memetakan pengguna lain guna mengakses DLF 1.0 dan OSS. Misalnya, pemilik server eksternal dapat menjalankan CREATE USER MAPPING untuk menentukan Pengguna RAM dengan UID 123xxx agar dapat mengakses data eksternal di OSS.

    Pastikan akun tersebut memiliki izin yang diperlukan untuk mengkueri data eksternal yang sesuai. Untuk informasi selengkapnya tentang prinsip dasarnya, lihat postgres create user mapping.

    CREATE USER MAPPING FOR ACCOUNT_UID SERVER SERVER_NAME OPTIONS 
    (
        dlf_access_id 'YOUR_ACCESS_KEY', 
        dlf_access_key 'YOUR_ACCESS_SECRET',
        oss_access_id 'YOUR_ACCESS_KEY', 
        oss_access_key 'YOUR_ACCESS_SECRET'
    );

    Contoh:

    -- Buat pemetaan pengguna untuk pengguna saat ini.
    CREATE USER MAPPING FOR current_user SERVER SERVER_NAME OPTIONS
    (
        dlf_access_id 'YOUR_ACCESS_KEY', 
        dlf_access_key 'YOUR_ACCESS_SECRET',
        oss_access_id 'YOUR_ACCESS_KEY', 
        oss_access_key 'YOUR_ACCESS_SECRET'
    );
    
    -- Buat pemetaan pengguna untuk Pengguna RAM 123xxx.
    CREATE USER MAPPING FOR "p4_123xxx" SERVER SERVER_NAME OPTIONS
    (
        dlf_access_id 'YOUR_ACCESS_KEY', 
        dlf_access_key 'YOUR_ACCESS_SECRET',
        oss_access_id 'YOUR_ACCESS_KEY', 
        oss_access_key 'YOUR_ACCESS_SECRET'
    );
    
    -- Hapus pemetaan pengguna.
    DROP USER MAPPING FOR current_user SERVER SERVER_NAME;
    DROP USER MAPPING FOR "p4_123xxx" SERVER SERVER_NAME;

Baca data dari data lake OSS

Ambil sumber data DLF 1.0 sebagai contoh. Anda harus menyiapkan tabel metadata di DLF 1.0 dan memastikan data telah diisi dalam tabel ini. Langkah-langkah berikut menjelaskan cara mengakses data OSS melalui DLF 1.0 dengan menggunakan tabel eksternal di Hologres:

  1. Buat tabel eksternal di instans Hologres Anda.

    Setelah server dibuat, Anda dapat menggunakan pernyataan CREATE FOREIGN TABLE atau pernyataan IMPORT FOREIGN SCHEMA untuk membuat satu atau beberapa tabel eksternal di Hologres. Hal ini memungkinkan Anda membaca data OSS yang dikelola oleh DLF 1.0.

    Catatan

    Jika tabel eksternal OSS memiliki nama yang sama dengan tabel internal Hologres, IMPORT FOREIGN SCHEMA akan melewati pembuatan tabel eksternal tersebut. Dalam kasus ini, gunakan CREATE FOREIGN TABLE dan tentukan nama tabel yang unik.

    Hologres dapat membaca tabel partisi dari OSS. Kolom dengan tipe data TEXT, VARCHAR, dan INT didukung sebagai kunci partisi. Metode CREATE FOREIGN TABLE hanya memetakan bidang tanpa menyimpan data, sehingga Anda dapat membuat bidang partisi sebagai bidang biasa. Metode IMPORT FOREIGN SCHEMA secara otomatis menangani pemetaan bidang tabel, sehingga Anda tidak perlu mengelola bidang tabel tersebut.

    • Sintaks

      -- Metode 1
      CREATE FOREIGN TABLE [ IF NOT EXISTS ] oss_table_name ( [
      { column_name data_type }
        [, ... ]
        ] )
      SERVER SERVER_NAME
      OPTIONS
      (
        schema_name 'DLF_DATABASE_NAME',
        table_name 'DLF_TABLE_NAME'
      );
      
      -- Metode 2
      IMPORT FOREIGN SCHEMA schema_name
          [ { LIMIT TO | EXCEPT } ( table_name [, ...] ) ]
          FROM SERVER SERVER_NAME
          INTO local_schema
          [ OPTIONS ( option 'value' [, ... ] ) ]
    • Parameter

      Parameter

      Deskripsi

      schema_name

      Nama metadatabase yang dibuat di DLF 1.0.

      table_name

      Nama tabel metadata yang dibuat di DLF 1.0.

      SERVER_NAME

      Nama server yang dibuat di Hologres.

      local_schema

      Nama skema di Hologres.

      options

      Opsi untuk pernyataan IMPORT FOREIGN SCHEMA. Untuk informasi selengkapnya, lihat IMPORT FOREIGN SCHEMA.

    • Contoh

      • Buat satu tabel.

        Buat tabel eksternal untuk memetakan data dari tabel metadata dlf_oss_test di metadatabase DLF 1.0 dlfpro. Tabel tersebut berada di skema public Hologres. Jika tabel sudah ada, tabel tersebut akan diperbarui.

        -- Metode 1
        CREATE FOREIGN TABLE dlf_oss_test_ext
        (
          id text,
          pt text
        )
        SERVER SERVER_NAME
        OPTIONS
        (
          schema_name 'dlfpro',
          table_name 'dlf_oss_test'
        );
        
        -- Metode 2
        IMPORT FOREIGN SCHEMA dlfpro LIMIT TO
        (
          dlf_oss_test
        )
        FROM SERVER SERVER_NAME INTO public options (if_table_exist 'update');
      • Buat tabel secara massal.

        Petakan semua tabel dari metadatabase DLF 1.0 dlfpro ke skema public di Hologres. Hal ini membuat tabel eksternal di Hologres secara massal dengan nama yang sama.

        • Impor seluruh database.

          IMPORT FOREIGN SCHEMA dlfpro
          FROM SERVER SERVER_NAME INTO public options (if_table_exist 'update');
        • Impor beberapa tabel.

          IMPORT FOREIGN SCHEMA dlfpro
          (
            table1,
            table2,
            tablen
          )
          FROM SERVER SERVER_NAME INTO public options (if_table_exist 'update');
  2. Kueri data.

    Setelah tabel eksternal dibuat, Anda dapat langsung mengkuerinya untuk membaca data dari OSS.

    • Tabel non-partisi

      SELECT * FROM dlf_oss_test;
    • Tabel partisi

      SELECT * FROM partition_table WHERE dt = '2013';

Langkah selanjutnya

FAQ

Mengapa saya menerima error ERROR: babysitter not ready,req:name:"HiveAccess" saat membuat tabel eksternal DLF 1.0?

  • Penyebab

    Konfigurasi backend belum ditambahkan.

  • Solusi

    Di halaman Instances Konsol Hologres, klik Lake Acceleration untuk mengaktifkan konfigurasi backend.

Tutorial

Accelerate data lake queries