全部产品
Search
文档中心

Hologres:Percepatan data lake OSS

更新时间:Feb 14, 2026

Akselerasi data lake Hologres yang dibangun di atas Alibaba Cloud Data Lake Formation (DLF) dan Object Storage Service (OSS) menyediakan kemampuan akses dan analisis data yang fleksibel serta pemrosesan data yang efisien, sehingga secara signifikan mempercepat kueri dan analisis data dalam data lake OSS. Topik ini menjelaskan cara membaca dan menulis data OSS menggunakan DLF 1.0 di Hologres.

Prasyarat

  • DLF 1.0 telah diaktifkan. Untuk informasi selengkapnya, lihat Quick Start. Untuk daftar wilayah tempat DLF tersedia, lihat Wilayah dan titik akhir yang didukung.

  • OSS telah diaktifkan dan data Anda siap. Untuk informasi selengkapnya, lihat Memulai dengan OSS.

  • Anda telah mengonfigurasi otorisasi OSS. Untuk mengakses data OSS melalui tabel eksternal, akun yang digunakan harus memiliki izin akses OSS yang diperlukan. Jika tidak, meskipun tabel eksternal berhasil dibuat, Anda tidak dapat melakukan kueri terhadap data tersebut. Untuk detail tentang otorisasi OSS, lihat Kebijakan Bucket (Java SDK V1).

  • (Opsional) Jika Anda berencana menggunakan OSS-HDFS, Anda harus terlebih dahulu mengaktifkan layanan OSS-HDFS. Untuk informasi selengkapnya, lihat Aktifkan OSS-HDFS.

Catatan penggunaan

  • Saat mengekspor data Hologres ke OSS, hanya perintah INSERT INTO yang didukung. Perintah seperti INSERT ON CONFLICT, UPDATE, atau DELETE tidak didukung.

  • Hanya Hologres V1.3 atau versi lebih baru yang mendukung penulisan data kembali ke OSS, dan hanya file dalam format ORC, Parquet, CSV, atau SequenceFile yang didukung.

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

  • Pernyataan IMPORT FOREIGN SCHEMA mendukung pengimporan tabel partisi yang disimpan di OSS. Hologres saat ini mendukung kueri hingga 512 partisi sekaligus. Tambahkan kondisi filter partisi untuk memastikan setiap kueri melibatkan tidak lebih dari 512 partisi.

  • Kueri data lake bekerja dengan memuat partisi kueri tertentu dari data tabel eksternal ke memori dan cache Hologres pada waktu proses untuk komputasi. Untuk menjaga kinerja kueri, Hologres membatasi volume data per kueri hingga 200 GB (jumlah data yang terkena setelah filter partisi).

  • Anda tidak dapat menjalankan perintah UPDATE, DELETE, atau TRUNCATE pada tabel eksternal.

  • Versi baru DLF tidak mendukung akselerasi data lake OSS. Hanya DLF 1.0 (DLF-Legacy) yang mendukung fitur akselerasi ini.

Prosedur

Konfigurasi lingkungan

  1. Aktifkan konfigurasi backend DLF_FDW untuk instans Hologres Anda.

    Di Konsol Hologres, buka halaman Instances atau Instance Details. Di kolom Actions untuk instans target, klik Data Lake Acceleration dan konfirmasi operasi tersebut. Sistem akan secara otomatis mengonfigurasi DLF_FDW dan me-restart instans di latar belakang. Setelah instans direstart, Anda dapat menggunakan layanan tersebut.

    Catatan

    Hologres sedang meluncurkan konfigurasi mandiri untuk backend DLF_FDW di konsol. Jika Anda tidak melihat tombol Data Lake Acceleration, ikuti petunjuk di Kesalahan umum persiapan peningkatan atau bergabung dengan kelompok DingTalk Hologres untuk mendapatkan dukungan. Untuk informasi selengkapnya, lihat Bagaimana cara mendapatkan dukungan online?.

    Setelah mengaktifkan DLF_FDW, sistem menggunakan sumber daya default (saat ini 1 core dan memori 4 GB). Tidak perlu membeli sumber daya tambahan.

  2. Buat ekstensi.

    Superuser harus menjalankan pernyataan berikut di database untuk membuat ekstensi, yang memungkinkan pembacaan data OSS melalui DLF 1.0. Operasi ini berlaku untuk seluruh database dan hanya perlu dilakukan sekali per database.

    CREATE EXTENSION IF NOT EXISTS dlf_fdw;
  3. Anda dapat membuat server eksternal.

    Penting

    Anda harus menggunakan akun Superuser untuk membuat server eksternal. Jika tidak, akan terjadi error izin.

    Hologres mendukung fitur multi-katalog DLF 1.0. Jika Anda hanya memiliki satu kluster EMR, gunakan katalog default DLF 1.0. Jika Anda memiliki beberapa kluster EMR, gunakan katalog kustom untuk mengontrol kluster EMR mana yang terhubung ke instans Hologres Anda. Anda juga dapat memilih OSS native atau OSS-HDFS sebagai sumber data Anda. Konfigurasikan sebagai berikut:

    • Buat server menggunakan katalog default DLF 1.0 dan penyimpanan OSS native. Contoh sintaks:

      -- Lihat server yang sudah ada. Server meta_warehouse_server dan odps_server adalah server sistem 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 Anda.

      • Tentukan titik akhir OSS-HDFS (node wilayah).

        Untuk mengakses data yang disimpan di OSS-HDFS melalui DLF_FDW, konfigurasikan nama domain layanan OSS-HDFS. Anda dapat menemukan nama domain ini di halaman Ikhtisar bucket yang telah diaktifkan OSS-HDFS di konsol OSS.

        image

      • Buat server eksternal dan konfigurasikan titik akhirnya.

        Setelah mengonfirmasi nama domain bucket, konfigurasikan opsi OSS_Endpoint DLF_FDW di Hologres. Contoh sintaks:

        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' -- Nama domain titik akhir node bucket OSS-HDFS
        );
      • Deskripsi parameter.

        Parameter

        Deskripsi

        Contoh

        SERVER_NAME

        Nama server kustom.

        dlf_server

        dlf_region

        Wilayah tempat DLF 1.0 berada. Pilih berdasarkan wilayah Anda:

        • Tiongkok (Beijing): cn-beijing.

        • Tiongkok (Hangzhou): cn-hangzhou.

        • Tiongkok (Shanghai): cn-shanghai.

        • Tiongkok (Shenzhen): cn-shenzhen.

        • Tiongkok (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

        Gunakan titik akhir layanan internal DLF 1.0 untuk kinerja akses yang lebih baik.

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

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

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

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

        • Tiongkok (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 OSS native, gunakan 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 mendukung penggunaan perintah CREATE USER MAPPING untuk menentukan identitas pengguna lain dalam mengakses DLF 1.0 dan OSS. Misalnya, pemilik server eksternal dapat menggunakan CREATE USER MAPPING agar RAM user 123xxx dapat mengakses data eksternal OSS.

    Pastikan akun yang ditentukan memiliki izin kueri untuk data eksternal yang sesuai. Untuk detailnya, 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 RAM user 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 lake OSS

Gunakan DLF 1.0 sebagai sumber data. Pertama, buat tabel metadata di DLF 1.0 dan pastikan data telah diekstraksi. Kemudian, ikuti langkah-langkah berikut untuk mengakses data OSS melalui DLF 1.0 di Hologres menggunakan tabel eksternal:

  1. Buat tabel eksternal di instans Hologres Anda.

    Setelah membuat server, gunakan CREATE FOREIGN TABLE untuk membuat satu tabel eksternal atau IMPORT FOREIGN SCHEMA untuk membuat tabel eksternal secara individual atau massal guna membaca data OSS yang diekstraksi oleh DLF 1.0.

    Catatan

    Jika tabel eksternal OSS memiliki nama yang sama dengan tabel internal Hologres yang sudah ada, IMPORT FOREIGN SCHEMA akan melewati pembuatan tabel eksternal tersebut. Gunakan CREATE FOREIGN TABLE untuk menentukan nama tabel yang tidak duplikat.

    Hologres mendukung pembacaan tabel partisi di OSS. Tipe data yang didukung untuk kunci partisi adalah TEXT, VARCHAR, dan INT. Dengan CREATE FOREIGN TABLE, yang hanya melakukan pemetaan bidang tanpa menyimpan data, buat bidang partisi sebagai bidang biasa. Dengan IMPORT FOREIGN SCHEMA, pemetaan bidang ditangani secara otomatis—tidak perlu konfigurasi bidang manual.

    • Contoh 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' [, ... ] ) ]
    • Deskripsi 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

      Nilai parameter opsi untuk IMPORT FOREIGN SCHEMA. Untuk informasi selengkapnya, lihat IMPORT FOREIGN SCHEMA.

    • Contoh.

      • Buat satu per satu.

        Buat tabel eksternal yang memetakan data dari tabel metadata dlf_oss_test di metadatabase dlfpro DLF 1.0. Tabel tersebut berada di skema public di Hologres. Periksa apakah tabel eksternal tersebut sudah ada dan perbarui jika sudah ada.

        -- 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 beberapa sekaligus.

        Petakan semua tabel dari metadatabase dlfpro DLF 1.0 ke skema public di Hologres. Ini akan membuat beberapa tabel eksternal di Hologres dengan nama yang sama seperti di dlfpro.

        • 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. Lakukan kueri data.

    Setelah berhasil membuat tabel eksternal, lakukan kueri langsung untuk membaca data dari OSS.

    • Tabel non-partisi

      SELECT * FROM dlf_oss_test;
    • Tabel partisi

      SELECT * FROM partition_table WHERE dt = '2013';

Langkah berikutnya

FAQ

Saat membuat tabel eksternal DLF 1.0, Anda menerima error: ERROR: babysitter not ready,req:name:"HiveAccess".

  • Penyebab.

    Belum ada konfigurasi backend yang ditambahkan.

  • Solusi.

    Di konsol, buka halaman Instances dan klik Data Lake Acceleration untuk mengaktifkan konfigurasi backend.

Tutorial

Percepat kueri data lake