当需要从Hive等Hadoop集群迁移数据到GaussDB 200集群时,因为数据量太大,可能无法导出到本地。此时需要GaussDB 200跨集群读取HDFS上的数据,并写入GaussDB 200集群。
目前GaussDB 200只支持跨集群访问FusionInsight HD中的HDFS。
前提条件
- FusionInsight HD和GaussDB 200两个集群状态正常并且可以互相通信。
- 远端FusionInsight HD集群被访问的表为ORC格式。
- 远端FusionInsight HD集群HDFS服务配置选项“hadoop.rpc.protection”值为“authentication”。
- 远端FusionInsight HD集群存在具有访问集群HDFS数据目录权限的用户。
- 远端FusionInsight HD集群已安装了客户端。
操作步骤
1、创建配置文件
登录FusionInsight Manager>选择“集群 > 待操作的集群名称 > 服务 > MPPDB > 对接 > 对接HDFS”,单击“创建”,填写配置组名称,单击“确定”。如下图所示:
各个参数的说明如下图所示:
保存完成后,mppdb概览里会显示配置状态为过期配置,立即重启mppdb服务即可。另外,上传的文件位置位于${BIGDATA_HOME}/mppdb/hdfs_conf下面。2、创建HDFS外表SERVER
使用omm用户,登录数据库执行下面的操作创建外表server。
[omm@hd01 ~]$ source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile [omm@hd01 ~]$ gsql -d rhnschema -p 25308 -r rhnschema=# create server server_test foreign data wrapper hdfs_fdw options(address '192.168.110.35:25000,192.168.110.36:25000',hdfscfgpath '/opt/huawei/Bigdata/mppdb/hdfs_conf/FHD/candon@HADOOP.COM',type 'HDFS'); CREATE SERVER
可以使用下面的SQL查询已创建的server信息:rhnschema=# select *from pg_foreign_server where srvname='server_test';
3、创建HDFS外表
rhnschema=# create foreign table f_a (id int,name text) server server_test options(format 'orc',foldername '/user/hive/warehouse/hivedb.db/a') distribute by roundrobin;
CREATE FOREIGN TABLE
创建外表的语法如下图所示:
4、验证
rhnschema=# select *from f_a;
来源:51CTO
作者:candon123
链接:https://blog.51cto.com/candon123/2458043