Hologres從V1.3.26版本開始,支援讀寫儲存於OSS-HDFS上的資料。本文為您介紹基於DLF訪問OSS-HDFS資料湖資料的使用方法。
背景資訊
OSS-HDFS(JindoFS)是一款雲原生資料湖儲存服務,相比原生OSS儲存,OSS-HDFS與Hadoop生態計算引擎無縫整合,在典型的基於Hive和Spark的離線ETL情境擁有更好的表現。OSS-HDFS詳情請參見什麼是OSS-HDFS服務。對於儲存在OSS-HDFS上的資料,Hologres通過DLF實現中繼資料管理,通過JindoSDK實現資料的直接存取以及回寫,回寫目前僅支援ORC、Parquet、CSV及SequenceFile格式的表。通過DLF讀寫OSS資料的方法請參見OSS資料湖加速。
前提條件
已開通DLF資料湖構建,詳情請參見快速入門。支援的地區請參見已開通的地區和訪問網域名稱。
已開通OSS-HDFS並完成了資料準備,詳情請參見開通OSS-HDFS服務。
Hologres執行個體已開通資料湖加速服務,詳情請參見環境配置。
使用說明
確定OSS-HDFS Bucket網域名稱。
在Hologres中配置OSS-HDFS的服務網域名稱,網域名稱地址可以在OSS控制台中,已開通OSS-HDFS服務的Bucket概覽頁擷取。

建立Foreign Server並配置關聯資訊。
重要當您需要同時訪問儲存在OSS-HDFS上的多個環境資料時,需要配置多個Foreign Server。例如,對於儲存在OSS-HDFS上的外部表格,需要建立獨立的Foreign Server,並將oss_endpoint配置為OSS-HDFS Endpoint,在匯入和建立外部表格過程中指定使用該Foreign Server。同理,對於儲存在OSS上的資料表,也需要配置獨立的Foreign Server,並配置對應的OSS訪問網域名稱。
確認Bucket網域名稱後即可在Hologres中配置DLF和OSS的Endpoint,文法如下:
CREATE EXTENSION IF NOT EXISTS dlf_fdw; CREATE SERVER IF NOT EXISTS <servername> FOREIGN data wrapper dlf_fdw options ( dlf_region 'cn-<region>', dlf_endpoint 'dlf-share.cn-<region>.aliyuncs.com', oss_endpoint '<bucket_name>.cn-<region>.oss-dls.aliyuncs.com' -- OSS-HDFS Bucket網域名稱 );參數說明:
參數名稱
說明
樣本
servername
自訂的server名稱。
dlf_server
dlf_region
串連DLF所在的可用性區域,請您根據地區進行選擇。
支援的地區請參見已開通的地區和訪問網域名稱。
cn-beijing
dlf_endpoint
推薦使用DLF的對內服務Endpoint,可以獲得更好的訪問效能,支援的地區請參見已開通的地區和訪問網域名稱。
如您需要跨Region訪問,則需使用公網Endpoint。
重要公網Endpoint會產生網路費用且帶來一定的效能損耗,網路費用詳情請參見計費概述。
dlf-share.cn-beijing.aliyuncs.comoss_endpoint
步驟1中擷取的OSS-HDFS Endpoint。OSS-HDFS目前僅支援內網訪問,即預設不支援跨地區訪問。
說明原生OSS儲存推薦使用OSS的內網Endpoint,以獲得更好的訪問效能,如您需要同Hologres、DLF跨Region互動,則需使用公網Endpoint,詳情請參見OSS訪問網域名稱使用規則。
bucket_nametest.cn-hangzhou.oss-dls.aliyuncs.com建立外部表格並讀寫儲存於OSS-HDFS上的資料。
單獨建立:建立一張外部表格映射DLF中繼資料庫dlfpro中中繼資料表dlf_oss_test的資料,該表位於Hologres中的public Schema。
-- 方式一 CREATE FOREIGN TABLE dlf_oss_test ( id text, pt text ) SERVER dlf_server --已建立的Foreign Server options ( schema_name 'dlfpro', table_name 'dlf_oss_test' ); -- 方式二: IMPORT FOREIGN SCHEMA dlfpro LIMIT TO ( dlf_oss_test ) FROM SERVER dlf_server INTO public options (if_table_exist 'update');大量建立:將DLF中繼資料庫dlfpro中所有的表都映射至Hologres的public schema,將會在Hologres中大量建立同名外部表格。
整庫匯入:
IMPORT FOREIGN SCHEMA dlfpro FROM SERVER dlf_server INTO public options (if_table_exist 'update');多表匯入:
IMPORT FOREIGN SCHEMA dlfpro ( table1, table2, tablen ) FROM SERVER dlf_server INTO public options (if_table_exist 'update');
資料查詢。
建立外部表格成功後,在Hologres對應Schema下,或者HoloWeb表結構目錄中,即可看到該外部表格,可直接查詢外部表格讀取OSS中的資料。對於CSV、Parquet、ORC格式的外部表格,也支援回寫資料。
查詢非分區表
SELECT * FROM dlf_oss_test;查詢分區表
SELECT * FROM <partition_table> where dt = '2013';
更多操作步驟請參見使用說明。