• 沒有找到結果。

获取 MRS 数据源连接的外部服务器信息

步骤1 使用创建外部服务器的用户去连接其对应的数据库。

是否使用普通用户在自定义数据库中创建外表,请根据需求进行选择:

● 是

a. 请先确保,您已按照手动创建外部服务器章节中的步骤,创建了普通用户 dbuser和它的数据库mydatabase,并在mydatabase中手动创建了一个外部 服务器。

b. 使用用户dbuser通过GaussDB(DWS)提供的数据库客户端连接数据库 mydatabase。

如果已经使用gsql客户端连接至数据库,可以直接执行如下命令进行用户和 数据库切换:

\c mydatabase dbuser;

根据界面提示输入密码。

● 否

当您通过GaussDB(DWS)管理控制台创建MRS数据源连接时,数据库管理员 dbadmin会在默认数据库gaussdb中自动创建一个外部服务器。因此,如果使用数 据库管理员dbadmin在默认数据库gaussdb中创建外表,需要通过

GaussDB(DWS)提供的数据库客户端工具连接数据库。例如,使用gsql客户端的 用户通过如下命令连接数据库:

gsql -d gaussdb -h 192.168.2.30 -U dbadmin -p 8000 -W password -r

根据界面提示输入密码。

步骤2 执行以下命令,查看已创建的MRS数据源连接的外部服务器信息。

SELECT * FROM pg_foreign_server;

说明

也可以执行\desc+命令查看外部服务器信息。

返回结果如:

srvname | srvowner | srvfdw | srvtype | srvversion | srvacl

| srvoptions

---+---+---+---+---+--- gsmpp_server | 10 | 13673 | | | |

gsmpp_errorinfo_server | 10 | 13678 | | | |

hdfs_server_8f79ada0_d998_4026_9020_80d6de2692ca | 16476 | 13685 | | | |

{"address=192.168.1.245:25000,192.168.1.218:25000",hdfscfgpath=/MRS/8f79ada0-d998-4026-9020-80d6de2692ca,type=hdfs}

(3 rows)

查询结果中,每一行代表一个外部服务器的信息。与MRS数据源连接相关联的外部服 务器包含以下信息:

● srvname值包含“hdfs_server”字样以及MRS集群的ID,此ID与MRS管理控制台 的集群列表MRS ID相同。

● srvoptions字段中的address参数为MRS集群的主备节点的IP地址及端口。

您可以根据上述信息找到您所要的外部服务器,并记录下它的srvname和srvoptions的 值。

----结束

创建外表

当完成获取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)集群 每一个节点都读取一份完整数据。

– 语法中的其他参数

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

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

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;