全部产品
Search
文档中心

实时数仓Hologres:基于HoloWeb创建OSS外部表

更新时间:Dec 13, 2024

在Hologres中,您可以通过配置Foreign Server(外部服务器)来指定外部数据源(OSS)的连接信息,进而创建外部表,实现跨系统的数据访问与查询。本文将为您介绍如何利用HoloWeb可视化工具创建外部服务器以及管理外部表,并进行数据预览。

前提条件

  • 已创建OSS Bucket并导入数据,详情请参见开始使用OSS

  • 已创建DLF Catalog,详情请参见数据目录

  • 已具备所使用的foreign-data wrapper的USAGE权限,授权方式请参见权限授予

  • Foreign Server的DLF Catalog中已存在数据库和数据表,创建数据库和数据表的操作请参见数据库表及函数

使用限制

Hologres不支持跨地域查询外部表数据。

创建Foreign Server

在Hologres中,Foreign Server(外部服务器)用于指定通过foreign-data wrapper访问外部数据源(如对象存储OSS)的连接信息,以便实现跨系统数据访问和查询。您也可以通过用户映射指定特定用户的连接信息,更多信息请参见创建外部服务器

  1. 登录Hologres管理控制台

  2. 在顶部菜单栏左侧,选择相应的地域。

  3. 在左侧导航栏选择实例列表,单击目标实例操作列的数据湖加速,以开启数据湖加速能力。

  4. 单击前往HoloWeb,进入HoloWeb开发页面。

  5. 登录目标数据库后,在顶部菜单栏单击元数据管理

  6. 在元数据管理页面,单击OSS数据湖加速 > 创建Foreign Server

    image

    参数说明如下:

    参数

    描述

    Server Name

    外部服务器的名称。

    重要

    外部服务器名称必须在数据库中保持唯一。

    DLF EndPoint

    默认为当前地域的DLF Endpoint,详情请参见已开通的地域和访问域名

    DLF Catalog

    在下拉列表中选择已创建的DLF Catalog名称,若下拉列表为空,可单击前往DLF控制台进行创建

    OSS EndPoint

    默认为当前地域的原生OSS Endpoint,OSS-HDFS Endpoint可在下拉列表中选择。若未创建OSS Bucket,可单击前往OSS控制台进行创建

    说明
    • OSS Endpoint:可通过OSS地域和访问域名获取。

    • OSS-HDFS Endpoint:可以在OSS控制台中,已开通OSS-HDFS服务的Bucket概览页获取。

  7. 单击提交,完成Foreign Server的创建。

创建外部表

  1. 登录Hologres管理控制台

  2. 在顶部菜单栏左侧,选择相应的地域。

  3. 单击前往HoloWeb,进入HoloWeb开发页面。

  4. 在HoloWeb顶部菜单栏单击元数据管理

  5. 在元数据管理页面,单击OSS数据湖加速 > 创建外部表

    image

    您可根据需要选择加速方式为整库加速部分加速单表加速,参数说明如下:

    整库加速

    类别

    参数名

    描述

    加速方式

    整库加速

    将DLF指定数据库下的表全量创建为Hologres外部表。

    DLF数据源

    Server Name

    已创建的Foreign Server,用于指定外部数据源的连接信息。

    DB Name

    Foreign Server中指定DLF Catalog下的数据库名称。

    目标位置

    Holo Schema

    默认为public,可在下拉列表中选择有权限的其他Schema。

    高级选项

    表名冲突

    创建表时,如果数据库中已存在当前创建的表名称,您可以根据需要选择如下处理方式:

    • 忽略,继续创建其他表:忽略当前创建的表,继续创建其他表。

    • 更新,修改同名表:更新已有表的数据。

    • 报错,不再重复创建:产生报错,不再重复创建。

    数据类型不支持

    创建表时,如果存在不支持的数据类型,您可根据需要选择如下处理方式:

    • 报错,导入失败:产生报错,数据导入失败。

    • 忽略,跳过不支持字段所在表:忽略不支持字段所在的表,继续导入数据。

    部分加速

    类别

    参数名

    描述

    加速方式

    部分加速

    支持选择部分表来创建外部表,可通过表名模糊搜索。

    DLF数据源

    Server Name

    已创建的Foreign Server,用于指定外部数据源的连接信息。

    DB Name

    Foreign Server中指定DLF Catalog下的数据库名称。

    目标位置

    Holo Schema

    默认为public,可在下拉列表中选择有权限的其他Schema。

    高级选项

    表名冲突

    创建表时,如果数据库中已存在当前创建的表名称,您可以根据需要选择如下处理方式:

    • 忽略,继续创建其他表:忽略当前创建的表,继续创建其他表。

    • 更新,修改同名表:更新已有表的数据。

    • 报错,不再重复创建:产生报错,不再重复创建。

    数据类型不支持

    创建表时,如果存在不支持的数据类型,您可根据需要选择如下处理方式:

    • 报错,导入失败:产生报错,数据导入失败。

    • 忽略,跳过不支持字段所在表:忽略不支持字段所在的表,继续导入数据。

    搜索

    通过表名模糊搜索目标表进行勾选。

    单表加速

    类别

    参数名

    描述

    加速方式

    单表加速

    给指定的某一张表创建Hologres外部表。

    DLF数据源

    Server Name

    已创建的Foreign Server,用于指定外部数据源的连接信息。

    DB Name

    Foreign Server中指定DLF Catalog下的数据库名称。

    Table Name

    DLF数据库中创建的表名。

    Hologres目标表

    Schema

    默认为public,可在下拉列表中选择有权限的其他Schema。

    表名

    新建的Hologres外部表名称。

    说明

    输入目标DLF表名后,将会自动填入DLF表名,如您需要修改表名,可以重命名。

    目标表描述

    新建的Hologres外部表描述,可自定义修改。

  6. 单击提交,即可在左侧对应模式下,刷新出新建的外部表。

  7. 可选)您可鼠标双击已创建的外部表,单击查询表,进入SQL查询窗口,使用标准的PostgreSQL语言进行开发。

    说明

    输入表名称后,会显示外部源表的所有字段,创建外部表时也将默认创建所有字段。如果您需要创建部分字段,请使用单表加速或SQL语句创建外部表,使用SQL创建外部表的方式请参见CREATE FOREIGN TABLE

Foreign Server更多操作(SQL方式)

创建成功后,您可通过SQL语句对已创建的Foreign Server进行查看、修改及删除,语法如下:

  • 查看已创建的Foreign Server

    SELECT * FROM pg_foreign_server;
  • 修改Foreign Server的DLF Catalog

    ALTER SERVER <foreignserver_name> OPTIONS (ADD|SET|DROP dlf_catalog ['<catalog_name>']) ;

    参数说明如下:

    参数

    描述

    foreignserver_name

    待修改的Foreign Server名称。

    ADD

    为Foreign Server添加DLF Catalog。

    SET

    修改Foreign Server的DLF Catalog。

    DROP

    删除Foreign Server的DLF Catalog。例如ALTER SERVER foreign_server_test OPTIONS (DROP dlf_catalog) ;

  • 删除Foreign Server

    DROP SERVER <foreignserver_name> CASCADE;

    参数说明如下:

    参数

    描述

    foreignserver_name

    待删除的Foreign Server名称。

    CASCADE

    删除Foreign Server时,级联删除依赖于Foreign Server的对象。例如外部表。

外部表更多操作

编辑外部表

  1. 在HoloWeb页面的左侧导航栏,选择已登录实例列表。

  2. 单击目标实例 > 目标数据库 > 目标模式下的外表,显示所有已创建的外部表。

  3. 鼠标双击目标外部表,在详情页面单击编辑表

  4. 您可以根据业务需求,更改需要映射的外部源表的字段分区

  5. 单击提交,完成对当前外部表的编辑。

修改外部表名称

  1. 在HoloWeb页面左侧导航栏的已登录实例列表中查询目标外部表,查询目标外部表的操作请参见编辑外部表的步骤1~2。

  2. 鼠标右键单击目标外部表,选择重命名

  3. 修改表名对话框中填入新名称。

  4. 单击确认

删除外部表

  1. 在HoloWeb页面左侧导航栏的已登录实例列表中查询目标外部表,查询目标外部表的操作请参见编辑外部表步骤的1~2。

  2. 鼠标右键单击目标外部表,选择删除表

  3. 删除表对话框中单击确认

数据预览

  1. 在HoloWeb页面左侧导航栏的已登录实例列表中查询目标外部表,查询目标外部表的操作请参见编辑外部表步骤的1~2。

  2. 鼠标双击目标外部表,在外部表的详情页面单击数据预览

常见问题

  • 问题描述:在HoloWeb中访问目标外部表时,提示无RAM DLF API相关权限。页面报错包含如下信息:

    You are not authorized to perform the operation. Please use RAM to authorize the operation.Action: [dlf:xxx].
  • 解决方法:需要在RAM上授予AliyunDLF相关OpenAPI层权限。

相关文档