Hologres V2.2 dan versi lebih baru memungkinkan Anda menggunakan Hive Metastore Service (HMS) untuk mengakses data dalam Object Storage Service (OSS) danau data. Jika Anda menggunakan kluster E-MapReduce (EMR) untuk membangun danau data berbasis OSS, Anda dapat meningkatkan kecepatan membaca atau menulis data ke OSS dan OSS-HDFS dengan konfigurasi sederhana di Hologres.
Prasyarat
OSS telah diaktifkan. Untuk informasi lebih lanjut, lihat Mulai menggunakan konsol OSS.
Sebuah kluster DataLake telah dibuat dan data uji telah dipersiapkan. Untuk informasi lebih lanjut, lihat Buat kluster. Pastikan kluster DataLake memenuhi persyaratan berikut:
Versi Hive dari kluster DataLake adalah 3.1.3 atau lebih baru.
Otentikasi Kerberos tidak diaktifkan.
Parameter Metadata disetel ke Self-managed RDS atau Built-in MySQL.
Sebuah instance Hologres telah dibeli, percepatan danau data telah diaktifkan untuk instance tersebut, dan basis data telah dibuat pada instance tersebut. Untuk informasi lebih lanjut, lihat Beli instance Hologres dan Buat basis data.
CatatanUntuk mengaktifkan percepatan danau data, masuk ke Konsol Hologres, temukan instance yang diinginkan di halaman Instances, dan klik Data Lake Acceleration di kolom Actions. Dalam pesan yang muncul, klik Enable.
Koneksi jaringan telah dibangun.
Anda harus mengirimkan aplikasi untuk membangun koneksi jaringan. Setelah menerima aplikasi Anda, insinyur Hologres Alibaba Cloud akan menghubungi Anda dan membantu membuat koneksi jaringan. Prosedurnya:
Masuk ke konsol virtual private cloud (VPC) dan buat titik akhir terbalik. Untuk informasi lebih lanjut, lihat Buat dan kelola titik akhir. Saat membuat titik akhir terbalik, atur parameter Layanan Titik Akhir ke Other Endpoint Services dan masukkan nama layanan titik akhir di wilayah tempat instance EMR berada. Tabel berikut menyediakan nama layanan titik akhir di wilayah yang berbeda.
Wilayah
Nama layanan titik akhir
Tiongkok (Beijing)
com.aliyuncs.privatelink.cn-beijing.epsrv-2zeokrydzjd6kx3cbwmb
Tiongkok (Shanghai)
com.aliyuncs.privatelink.cn-shanghai.epsrv-uf61fvlfwta7f7dv9n3x
Tiongkok (Zhangjiakou)
com.aliyuncs.privatelink.cn-zhangjiakou.epsrv-8vbno4k4wwvys0eg2swp
CatatanJika wilayah Anda tidak termasuk dalam tabel sebelumnya, insinyur Hologres akan membuat layanan titik akhir di wilayah Anda dan memberikan nama layanan setelah Anda mengirimkan permintaan.
VPC adalah lingkungan jaringan terisolasi yang dibangun di atas Alibaba Cloud. VPC serta VPC dan jaringan klasik secara logis terisolasi satu sama lain dan tidak dapat saling mengakses secara default. Layanan Hologres diluncurkan sebelum VPC dan diterapkan di jaringan klasik. Oleh karena itu, Anda harus mengonfigurasi titik akhir terbalik untuk menerapkan konektivitas jaringan.
Koneksi jaringan dibangun berdasarkan alamat IP. Jika alamat IP kluster DataLake berubah, Anda harus mengonfigurasi ulang koneksi jaringan.
Batasan
Fitur percepatan danau data tidak didukung oleh instance sekunder baca-saja Hologres.
Operasi seperti
UPDATE,DELETE, danTRUNCATEtidak dapat dilakukan pada tabel asing.Fitur Auto Load tidak dapat digunakan untuk membuat tabel asing HMS di Hologres.
Kluster Hive dengan otentikasi Kerberos diaktifkan tidak didukung.
Prosedur
Eksekusi pernyataan SQL berikut untuk menginstal ekstensi.
Izin superuser diperlukan untuk menginstal ekstensi. Ekstensi diinstal pada tingkat basis data dan hanya perlu diinstal satu kali per basis data.
CREATE EXTENSION IF NOT EXISTS hive_fdw;Buat server asing berdasarkan
hive_fdwdan konfigurasikan informasi titik akhir.CREATE SERVER IF NOT EXISTS <server_name> FOREIGN DATA WRAPPER hive_fdw OPTIONS ( hive_metastore_uris 'thrift://<IP address of HMS>:<Port number>', oss_endpoint 'oss-<nation>-<region>-internal.aliyuncs.com | <bucket>.oss-<nation>-<region>.oss-dls.aliyuncs.com' );Parameter
Diperlukan
Deskripsi
Contoh
server_name
Ya
Nama server asing.
hive_server
hive_metastore_uris
Ya
Pengenal Sumber Daya Seragam (URI) dari HMS. Tentukan nilai dalam format berikut:
thrift://<IP address of HMS>:<Port number>. Nomor port default adalah 9083.CatatanAnda dapat masuk ke Konsol EMR, temukan kluster yang diinginkan, dan klik Nodes di kolom Actions. Pada tab Nodes, Anda bisa mendapatkan internal IP address dari node master, yang merupakan alamat IP HMS.
thrift://172.16.0.250:9083
oss_endpoint
Ya
Titik akhir OSS. Pilih titik akhir OSS berdasarkan kebutuhan bisnis Anda.
OSS Asli: Untuk mengoptimalkan kinerja akses, kami sarankan Anda menggunakan titik akhir internal OSS.
OSS-HDFS: Hanya titik akhir internal yang dapat digunakan untuk akses.
CatatanAnda dapat masuk ke Konsol OSS dan klik bucket yang diinginkan. Di halaman Overview bucket yang diinginkan, Anda bisa mendapatkan titik akhir OSS di bagian Port.
OSS
oss-cn-shanghai-internal.aliyuncs.comOSS-HDFS
<bucket_name>.cn-beijing.oss-dls.aliyuncs.com
Opsional: Buat pemetaan pengguna.
Hologres memungkinkan Anda menjalankan pernyataan
CREATE USER MAPPINGuntuk mengizinkan pengguna tertentu mengakses server asing. Misalnya, Anda dapat menjalankan pernyataanCREATE USER MAPPINGsebagai pemilik server asing untuk mengizinkan pengguna RAM dengan ID pengguna (UID) 123xxx mengakses data OSS. Untuk informasi lebih lanjut tentang pernyataanCREATE USER MAPPING, lihat CREATE USER MAPPING.CREATE USER mapping FOR <User account> server <server_name> options ( dlf_access_id '<yourAccessKeyId>', dlf_access_key '<yourAccessKeySecret>', oss_access_id '<yourAccessKeyId>', oss_access_key '<yourAccessKeySecret>' );Contoh kode:
-- Buat pemetaan pengguna untuk akun Alibaba Cloud Anda. CREATE USER mapping FOR current_user server <server_name> options ( dlf_access_id 'yourAccessKeyId', dlf_access_key 'yourAccessKeySecret', oss_access_id 'yourAccessKeyId', oss_access_key 'yourAccessKeySecret' ); -- Buat pemetaan pengguna untuk pengguna RAM dengan UID 123xxx. CREATE USER mapping FOR "p4_123xxx" server <server_name> options ( dlf_access_id 'yourAccessKeyId', dlf_access_key 'yourAccessKeySecret', oss_access_id 'yourAccessKeyId', oss_access_key 'yourAccessKeySecret' ); -- Hapus pemetaan pengguna. Drop USER MAPPING FOR CURRENT_USER server <server_name>; Drop USER MAPPING FOR "p4_123xxx" server <server_name>;Buat tabel asing.
Hologres menyediakan metode berikut untuk membuat tabel asing:
CREATE FOREIGN TABLE: Anda hanya dapat membuat satu tabel asing pada satu waktu. Anda dapat menentukan kolom yang ingin Anda peta di tabel asing. Metode ini cocok untuk skenario di mana Anda perlu membuat sejumlah kecil tabel asing dan hanya bidang tertentu yang memerlukan pemetaan.
IMPORT FOREIGN SCHEMA: Anda dapat membuat beberapa tabel asing pada saat yang sama. Metode ini cocok untuk skenario di mana Anda perlu membuat banyak tabel asing atau semua kolom dalam tabel sumber memerlukan pemetaan.
CatatanHologres memungkinkan Anda membaca data dari tabel partisi di OSS dan mengonfigurasi kolom bertipe TEXT, VARCHAR, dan INT sebagai kolom kunci partisi. Jika Anda menggunakan pernyataan CREATE FOREIGN TABLE, Anda harus mengonfigurasi pemetaan bidang. Dalam metode ini, tidak ada data yang disimpan, dan kolom kunci partisi dikonfigurasi dengan cara yang sama seperti bidang umum. Jika Anda menggunakan pernyataan IMPORT FOREIGN SCHEMA, sistem secara otomatis membuat pemetaan bidang.
Jika Anda menggunakan pernyataan IMPORT FOREIGN SCHEMA dan nama tabel asing OSS yang ingin Anda buat sama dengan nama tabel internal di Hologres, sistem tidak akan membuat tabel asing tetapi melanjutkan untuk membuat tabel asing lainnya. Dalam kasus ini, kami sarankan Anda menggunakan pernyataan CREATE FOREIGN TABLE untuk membuat tabel asing dengan nama unik.
-- Gunakan pernyataan CREATE FOREIGN TABLE. CREATE FOREIGN TABLE <holo_schema_name>.<table_name> ( { column_name data_type } [, ... ] ] ) ) SERVER <hive_server_name> OPTIONS ( schema_name '<ext_db_name>', table_name '<ext_table_name>' ); -- Gunakan pernyataan IMPORT FOREIGN SCHEMA. IMPORT FOREIGN SCHEMA <ext_db_name> [ { limit TO | EXCEPT } ( table_name [, ...] ) ] FROM server <hive_server_name> INTO <holo_schema_name> options( if_table_exist 'update', if_unsupported_type 'error' );Kueri data menggunakan tabel asing.
Setelah Anda membuat tabel asing, Anda dapat mengkueri data di OSS menggunakan tabel asing.
Tabel non-partisi
SELECT * FROM <holo_schema>.<hive_table>;Tabel partisi
SELECT * FROM <holo_schema>.<hive_partition_table> WHERE <partition_key> = '<partition_value>';