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
-
Aktifkan DLF 1.0. Untuk informasi selengkapnya, lihat Getting Started. Untuk informasi mengenai wilayah tempat DLF tersedia, lihat Data Lake Formation: Wilayah dan titik akhir yang didukung.
-
Aktifkan OSS dan siapkan data Anda. Untuk informasi selengkapnya, lihat Get started with OSS.
-
Berikan izin yang diperlukan untuk mengakses OSS. Akun yang digunakan untuk mengkueri tabel eksternal harus memiliki izin tersebut. Jika tidak, kueri akan gagal meskipun tabel telah dibuat. Untuk informasi mengenai cara memberikan izin pada OSS, lihat Bucket Policy (OSS SDK for Java 1.0).
-
(Opsional) Untuk menggunakan fitur OSS-HDFS, aktifkan layanan OSS-HDFS. Untuk informasi selengkapnya, lihat Enable OSS-HDFS and grant access permissions.
Catatan penggunaan
-
Saat mengekspor data dari Hologres ke OSS, Anda hanya dapat menjalankan perintah
INSERT INTO. PerintahINSERT ON CONFLICT,UPDATE, danDELETEtidak 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 SCHEMAmendukung 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, danTRUNCATEtidak 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
-
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.
CatatanFitur 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.
-
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; -
Buat server eksternal.
PentingAnda 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.comoss_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
-
-
-
-
(Opsional) Buat pemetaan pengguna.
Hologres memungkinkan Anda menjalankan perintah
CREATE USER MAPPINGuntuk memetakan pengguna lain guna mengakses DLF 1.0 dan OSS. Misalnya, pemilik server eksternal dapat menjalankanCREATE USER MAPPINGuntuk menentukan Pengguna RAM dengan UID123xxxagar 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:
-
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.
CatatanJika 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');
-
-
-
-
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
-
Untuk meningkatkan kinerja, impor data OSS ke tabel internal Hologres, lihat Import data from a data lake by using SQL.
-
Untuk menulis data dari tabel internal Hologres kembali ke data lake OSS guna dikueri dengan mesin eksternal, lihat Export data to a data lake.
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.