全部产品
Search
文档中心

Hologres:Akselerasi data lake OSS

更新时间:Feb 04, 2026

Akselerasi data lake Hologres, yang didukung oleh 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 yang disimpan di data lake OSS. Topik ini menjelaskan cara membaca dan menulis data OSS di Hologres menggunakan DLF 1.0.

Prasyarat

  • Anda telah mengaktifkan Data Lake Formation (DLF) 1.0. Untuk detailnya, lihat Quick Start. Untuk wilayah yang mendukung DLF, lihat Wilayah dan titik akhir yang tersedia.

  • Anda telah mengaktifkan OSS dan menyiapkan data Anda. Untuk informasi selengkapnya, lihat Aktifkan OSS.

  • Anda telah memberikan izin 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 informasi lebih lanjut tentang otorisasi OSS, lihat Kebijakan Bucket (Java SDK V1).

  • (Opsional) Jika Anda ingin menggunakan fitur OSS-HDFS, aktifkan terlebih dahulu layanan OSS-HDFS. Untuk informasi selengkapnya, lihat Aktifkan OSS-HDFS.

Catatan

  • Saat mengekspor data dari Hologres ke OSS, Anda hanya dapat menggunakan perintah INSERT INTO. Anda tidak dapat menggunakan perintah INSERT ON CONFLICT, UPDATE, atau DELETE.

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

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

  • Pernyataan IMPORT FOREIGN SCHEMA mendukung pengimporan tabel partisi dari OSS. Hologres dapat melakukan kueri maksimal 512 partisi sekaligus. Untuk memastikan satu kueri tidak melebihi batas ini, Anda harus menambahkan kondisi filter 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 (setelah filter partisi).

  • Perintah seperti UPDATE, DELETE, atau TRUNCATE tidak didukung pada tabel eksternal.

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

Instruksi

Konfigurasi lingkungan

  1. Aktifkan konfigurasi latar belakang DLF_FDW di instans Hologres Anda.

    Di Konsol Hologres, buka halaman Instances atau Instance Details. Di kolom Actions instans target Anda, klik Data Lake Acceleration dan konfirmasi. Sistem akan secara otomatis mengonfigurasi DLF_FDW dan melakukan restart instans. Setelah restart selesai, layanan siap digunakan.

    Catatan

    Opsi layanan mandiri untuk mengaktifkan DLF_FDW di Konsol Hologres sedang diluncurkan secara bertahap. Jika Anda tidak melihat tombol Data Lake Acceleration, lihat Kesalahan umum persiapan peningkatan atau bergabung dengan kelompok DingTalk Hologres untuk mendapatkan dukungan. Untuk informasi selengkapnya, lihat Bagaimana cara mendapatkan dukungan online lebih lanjut?.

    Setelah mengaktifkan DLF_FDW, sistem menggunakan sumber daya default (saat ini 1 Core dan 4 GB memori). 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. Buat server eksternal.

    Penting

    Anda harus menggunakan akun superuser untuk membuat server eksternal. Jika tidak, akan terjadi kesalahan izin.

    Hologres mendukung fitur multi-catalog DLF 1.0. Jika Anda hanya memiliki satu kluster EMR, gunakan catalog default DLF 1.0. Jika Anda memiliki beberapa kluster EMR, gunakan catalog kustom untuk menghubungkan instans Hologres Anda ke kluster EMR yang berbeda. Anda juga dapat memilih native OSS atau OSS-HDFS sebagai sumber data Anda. Detail konfigurasi sebagai berikut.

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

      -- Lihat server yang sudah ada (meta_warehouse_server dan odps_server adalah bawaan dan tidak dapat diubah 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 di Konsol OSS setelah mengaktifkan OSS-HDFS.

        image

      • Buat server eksternal dan konfigurasikan titik akhir.

        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.<span class="var-span" contenteditable="true" data-var="REGION_ID">REGION_ID.oss-dls.aliyuncs.com'</span> -- Nama domain titik akhir bucket OSS-HDFS
        );
      • Deskripsi parameter.

        Parameter

        Deskripsi

        Contoh

        SERVER_NAME

        Nama server kustom.

        dlf_server

        dlf_region

        Wilayah tempat DLF 1.0 dideploy. Pilih berdasarkan wilayah Anda.

        • 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

        Gunakan 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, 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 untuk menetapkan RAM user 123xxx mengakses data OSS eksternal.

    Pastikan akun yang ditentukan memiliki izin kueri untuk data eksternal. Untuk informasi lebih lanjut tentang cara kerjanya, 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

Menggunakan sumber data DLF 1.0 sebagai contoh, siapkan tabel metadata di DLF 1.0 dan pastikan berisi data yang diekstraksi. 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 atau IMPORT FOREIGN SCHEMA untuk membuat tabel eksternal satu per satu atau secara 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 bentrok.

    Hologres mendukung pembacaan tabel partisi dari OSS. Tipe data kunci partisi yang didukung adalah TEXT, VARCHAR, dan INT. Saat menggunakan CREATE FOREIGN TABLE, perlakukan bidang partisi sebagai bidang biasa karena tidak ada data aktual yang disimpan—hanya pemetaan bidang yang terjadi. Dengan IMPORT FOREIGN SCHEMA, pemetaan bidang ditangani secara otomatis.

    • 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 opsi untuk IMPORT FOREIGN SCHEMA. Untuk informasi selengkapnya, lihat IMPORT FOREIGN SCHEMA.

    • Contoh penggunaan.

      • Buat satu per satu.

        Buat tabel eksternal yang memetakan data dari tabel metadata dlf_oss_test di metadatabase DLF 1.0 dlfpro. Tabel tersebut berada di skema public di Hologres. Periksa apakah tabel eksternal 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 secara massal.

        Petakan semua tabel dari metadatabase DLF 1.0 dlfpro ke skema public di Hologres. Ini akan membuat tabel eksternal dengan nama yang sesuai secara massal.

        • 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 tabel eksternal berhasil dibuat, 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 selanjutnya

FAQ

Saat membuat tabel eksternal DLF 1.0, muncul kesalahan berikut: ERROR: babysitter not ready,req:name:"HiveAccess".

  • Penyebab.

    Konfigurasi latar belakang belum diaktifkan.

  • Solusi.

    Di Management Console, buka halaman Instances dan klik Data Lake Acceleration untuk mengaktifkan konfigurasi latar belakang.

Tutorial

Kueri akselerasi data lake