数据仓库服务 GAUSSDB(DWS)-创建外表:创建外表

时间:2023-11-22 14:18:17

创建外表

当完成获取MRS数据源连接的外部服务器信息获取MRS数据源的HDFS路径后,就可以创建一个外表,用于读取MRS数据源数据。

创建外表的语法格式如下,详细的描述请参见(CREATE FOREIGN TABLE (SQL on Hadoop or OBS))。

CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name 
( [ { column_name type_name 
    [ { [CONSTRAINT constraint_name] NULL |
    [CONSTRAINT constraint_name] NOT NULL |
      column_constraint [...]} ] |
      table_constraint [, ...]} [, ...] ] ) 
    SERVER dfs_server 
    OPTIONS ( { option_name ' value ' } [, ...] ) 
    DISTRIBUTE BY {ROUNDROBIN | REPLICATION}
    [ PARTITION BY ( column_name ) [ AUTOMAPPED ] ] ;

例如,创建一个名为"foreign_product_info"的外表,对语法中的参数按如下描述进行设置:

  • table_name

    必选。外表的表名。

  • 表字段定义
    • column_name:外表中的字段名。
    • type_name:字段的数据类型。

    多个字段用“,”隔开。

    外表的字段个数和字段类型,需要与MRS上保存的数据完全一致。定义字段的数据类型之前,您必须先了解数据类型转换说明

  • SERVER dfs_server

    外表的外部服务器名称,这个server必须存在。外表通过设置外部服务器,从而关联MRS数据源连接并从MRS集群读取数据。

    此处应填写为通过获取MRS数据源连接的外部服务器信息查询到的“srvname”字段的值。

  • OPTIONS参数

    用于指定外表数据的各类参数,关键参数如下所示。

    • format:必选参数。取值只支持“orc”。表示数据源文件的格式,只支持Hive的ORC数据文件。
    • foldername:必选参数。表示数据在HDFS的存储目录或数据文件路径。

      如果是启用了Kerberos认证的MRS分析集群,请确保MRS数据源连接的MRS用户,拥有此目录的读取权限。

      请按照获取MRS数据源的HDFS路径中的步骤获取HDFS路径,该路径作为foldername的参数值。

    • encoding:可选参数。外表中数据源文件的编码格式名称,缺省为utf8。
    • DISTRIBUTE BY
      表示外表的数据读取方式。有以下两种方式供选择,在本例中选择ROUNDROBIN。
      • ROUNDROBIN:表示外表在从数据源读取数据时,GaussDB(DWS)集群每一个节点读取随机一部分数据,并组成完整数据。
      • REPLICATION:表示外表在从数据源读取数据时,GaussDB(DWS)集群每一个节点都读取一份完整数据。
    • 语法中的其他参数

      其他参数均为可选参数,用户可以根据自己的需求进行设置,在本例中不需要设置。

根据以上信息,创建外表命令如下所示:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
DROP FOREIGN TABLE IF EXISTS foreign_product_info;

CREATE FOREIGN TABLE foreign_product_info
(
    product_price                integer        ,
    product_id                   char(30)       ,
    product_time                 date           ,
    product_level                char(10)       ,
    product_name                 varchar(200)   ,
    product_type1                varchar(20)    ,
    product_type2                char(10)       ,
    product_monthly_sales_cnt    integer        ,
    product_comment_time         date           ,
    product_comment_num          integer        ,
    product_comment_content      varchar(200)                      
) SERVER hdfs_server_8f79ada0_d998_4026_9020_80d6de2692ca 
OPTIONS (
format 'orc', 
encoding 'utf8',
foldername '/user/hive/warehouse/demo.db/product_info_orc/'
) 
DISTRIBUTE BY ROUNDROBIN;
support.huaweicloud.com/devg-820-dws/dws_04_0214.html