Hologres从V1.3.26版本开始,支持读写存储于OSS-HDFS上的数据。本文为您介绍基于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数据湖加速。
使用限制
该功能不支持读写使用OSS加速器的数据湖数据。
前提条件
- 已开通DLF数据湖构建,详情请参见快速入门。支持的区域请参见已开通的地域和访问域名。
- 已开通OSS-HDFS并完成了数据准备,详情请参见开通并授权访问OSS-HDFS服务。
- Hologres实例已开通数据湖加速服务,详情请参见环境配置。
使用说明
- 确定OSS-HDFS Bucket域名。在Hologres中配置OSS-HDFS的服务域名,域名地址可以在OSS控制台中,已开通OSS-HDFS服务的Bucket概览页获取。域名获取方式请参见获取OSS-HDFS服务域名。
- 创建Foreign Server并配置关联信息。重要 当您需要同时访问存储在OSS-HDFS上的多个环境数据时,需要配置多个Foreign Server。例如,对于存储在OSS-HDFS上的外部表,需要创建独立的Foreign Server,并将oss_endpoint配置为OSS-HDFS Bucket域名,在导入和创建外部表过程中指定使用该ForeignServer。同理,对于存储在OSS上的数据表,也需要配置独立的ForeignServer,并配置对应的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 'oss-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.com
oss_endpoint 步骤1中获取的OSS-HDFS Bucket域名。OSS-HDFS目前仅支持内网访问,即默认不支持跨区域访问。 说明 原生OSS存储推荐使用OSS的内网Endpoint,以获得更好的访问性能,如您需要同Hologres、DLF跨Region交互,则需使用公网Endpoint,详情请参见OSS访问域名使用规则。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');
- 整库导入:
- 单独创建:创建一张外部表映射DLF元数据库dlfpro中元数据表dlf_oss_test的数据,该表位于Hologres中的public Schema。
- 数据查询。创建外部表成功后,在Hologres对应Schema下,或者HoloWeb表结构目录中,即可看到该外部表,可直接查询外部表读取OSS中的数据。对于CSV、Parquet、ORC格式的外部表,也支持回写数据。
- 查询非分区表
SELECT * FROM dlf_oss_test;
- 查询分区表
SELECT * FROM <partition_table> where dt = '2013';
- 查询非分区表
反馈
- 本页导读 (1)
文档反馈