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 perintahINSERT ON CONFLICT,UPDATE, atauDELETE. -
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 SCHEMAmendukung 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, atauTRUNCATEtidak 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
-
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.
CatatanOpsi 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.
-
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; -
Buat server eksternal.
PentingAnda 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.

-
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.comoss_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
-
-
-
-
(Opsional) Buat pemetaan pengguna.
Hologres mendukung penggunaan perintah
CREATE USER MAPPINGuntuk menentukan identitas pengguna lain dalam mengakses DLF 1.0 dan OSS. Misalnya, pemilik server eksternal dapat menggunakanCREATE USER MAPPINGuntuk 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:
-
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.
CatatanJika 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');
-
-
-
-
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
-
Untuk mengimpor data OSS ke tabel internal Hologres guna kueri langsung dan kinerja lebih baik, lihat Impor data dari data lake menggunakan SQL.
-
Untuk menulis kembali data tabel internal Hologres ke data lake OSS guna kueri dengan mesin eksternal, lihat Ekspor ke data lake.
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.