• 沒有找到結果。

大数据融合分析场景下,支持同一区域内的多套GaussDB(DWS)集群之间的数据互通 互访,本实践将演示通过Foreign Table方式从远端DWS导入数据到本端DWS。

本实践演示过程为:以gsql作为数据库客户端,gsql安装在ECS,通过gsql连接DWS,

再通过外表方式导入远端DWS的数据。本实践预计时长40分钟,基本流程如下:

1. 准备工作

2. 创建ECS

3. 创建集群并下载工具包

4. 使用GDS导入数据源

5. 通过外表导入远端DWS数据

准备工作

已注册华为云账号,账号不能处于欠费或冻结状态。

创建 ECS

参见自定义购买弹性云服务器购买。购买后,参见登录Linux弹性云服务器进行登录。

须知

创建ECS过程中,注意选择与后续的DWS集群在同一个区域、可用区和同一个VPC子网 下,ECS的操作系统选择与下面的gsql客户端/GDS工具的操作系统一致(本例以 CentOS 7.6为例),并选择以密码方式登录。

创建集群并下载工具包

步骤1 登录华为云管理控制台。

步骤2 在“服务列表”中,选择“大数据 > 数据仓库服务”,单击右上角“购买数据仓库集 群”。

步骤3 参见表1-5进行参数配置。

1-5 软件配置

参数名称 配置方式

区域 选择“华北-北京四”。

说明

● 本指导以“华北-北京四”为例进行介绍,如果您需要选择其他区域进行操 作,请确保所有操作均在同一区域进行。

● 请确保DWS跟ECS在同一个区域、可用区和同一个VPC子网下。

可用区 可用区2 产品类型 标准数仓 CPU架构 X86

节点规格 dws2.m6.4xlarge.8(16 vCPU | 128GB | 2000GB SSD)

说明

如规格售罄,可选择其他可用区或规格。

节点数量 3

集群名称 dws-demo01 管理员用户 dbadmin 管理员密码 Demo@123456 确认密码 Demo@123456 数据库端口 8000

虚拟私有云 vpc-default

子网 subnet-default(192.168.0.0/24) 须知请确保与ECS在同一个VPC。

安全组 自动创建安全组 公网访问 现在购买 宽带 1Mbit/s 高级配置 默认配置

步骤4 信息核对无误,单击“立即购买”,单击“提交”。

步骤5 等待约10分钟,待集群创建成功后,单击集群名称进入“基本信息”,选择“网络 >

安全组名称”,确认安全组规则已添加,以IP为192.168.0.x的客户端网段为例(本例

gsql所在ECS的内网IP为192.168.0.90),需要添加192.168.0.0/24,端口为8000的安 全组规则。

步骤6 返回到集群“基本信息”界面,记录下“内网IP”。

步骤7 返回到DWS控制台首页,左侧导航选择“连接管理”,选择ECS的操作系统(以 CentOS 7.6为例,则选择“Redhat x86_64”),单击“下载”将工具包保存到本地。

(工具包中包含gsql客户端和GDS工具)。

步骤8 重复执行步骤1~步骤6,创建第二套DWS集群,名称设置为dws-demo02。

----结束

准备源数据

步骤1 在本地PC指定目录下,创建以下3个.csv格式的文件,数据样例如下。

● 数据文件“product_info0.csv”

100,XHDK-A,2017-09-01,A,2017 Shirt Women,red,M,328,2017-09-04,715,good!

205,KDKE-B,2017-09-01,A,2017 T-shirt Women,pink,L,584,2017-09-05,40,very good!

300,JODL-X,2017-09-01,A,2017 T-shirt men,red,XL,15,2017-09-03,502,Bad.

310,QQPX-R,2017-09-02,B,2017 jacket women,red,L,411,2017-09-05,436,It's nice.

150,ABEF-C,2017-09-03,B,2017 Jeans Women,blue,M,123,2017-09-06,120,good.

● 数据文件“product_info1.csv”

200,BCQP-E,2017-09-04,B,2017 casual pants men,black,L,997,2017-09-10,301,good quality.

250,EABE-D,2017-09-10,A,2017 dress women,black,S,841,2017-09-15,299,This dress fits well.

108,CDXK-F,2017-09-11,A,2017 dress women,red,M,85,2017-09-14,22,It's really amazing to buy.

450,MMCE-H,2017-09-11,A,2017 jacket women,white,M,114,2017-09-14,22,very good.

260,OCDA-G,2017-09-12,B,2017 woolen coat women,red,L,2004,2017-09-15,826,Very comfortable.

● 数据文件“product_info2.csv”

980,"ZKDS-J",2017-09-13,"B","2017 Women's Cotton Clothing","red","M",112,,, 98,"FKQB-I",2017-09-15,"B","2017 new shoes men","red","M",4345,2017-09-18,5473

50,"DMQY-K",2017-09-21,"A","2017 pants men","red","37",28,2017-09-25,58,"good","good","good"

80,"GKLW-l",2017-09-22,"A","2017 Jeans Men","red","39",58,2017-09-25,72,"Very comfortable."

30,"HWEC-L",2017-09-23,"A","2017 shoes women","red","M",403,2017-09-26,607,"good!"

40,"IQPD-M",2017-09-24,"B","2017 new pants Women","red","M",35,2017-09-27,52,"very good."

50,"LPEC-N",2017-09-25,"B","2017 dress Women","red","M",29,2017-09-28,47,"not good at all."

60,"NQAB-O",2017-09-26,"B","2017 jacket women","red","S",69,2017-09-29,70,"It's beautiful."

70,"HWNB-P",2017-09-27,"B","2017 jacket women","red","L",30,2017-09-30,55,"I like it so much"

80,"JKHU-Q",2017-09-29,"C","2017 T-shirt","red","M",90,2017-10-02,82,"very good."

步骤2 使用root帐户登录已创建好的ECS,执行以下命令创建数据源文件目录。

mkdir -p /input_data

步骤3 使用文件传输工具,将以上数据文档上传到ECS的/input_data目录下。

----结束

使用 GDS 导入数据源

步骤1 使用root帐户登录ECS,使用文件传输工具将步骤7下载好的工具包上传到/opt目录 下。

步骤2 在/opt目录下解压工具包。

cd /opt

unzip dws_client_8.1.x_redhat_x64.zip

步骤3 创建GDS用户,并修改数据源目录和GDS目录的属主。

groupadd gdsgrp

useradd -g gdsgrp gds_user

chown -R gds_user:gdsgrp /opt/gds chown -R gds_user:gdsgrp /input_data 步骤4 切换到gds_user用户。

su - gds_user 步骤5 导入GDS环境变量。

说明

仅8.1.x及以上版本需要执行,老版本请跳过。

cd /opt/gds/bin source gds_env 步骤6 启动GDS。

/opt/gds/bin/gds -d /input_data/ -p 192.168.0.90:5000 H 192.168.0.0/24 -l /opt/gds/gds_-log.txt -D

● -d dir:保存有待导入数据的数据文件所在目录。本教程中为“/input_data/”。

● -p ip:port:GDS监听IP和监听端口。配置为GDS所在的ECS的内网IP,可与DWS通 讯,本例为192.168.0.90:5000。

● -H address_string:允许哪些主机连接和使用GDS服务。参数需为CIDR格式。本 例设置为DWS的内网IP所在的网段即可。

● -l log_file:存放GDS的日志文件路径及文件名。本教程为“/opt/gds/

gds_log.txt”。

● -D:后台运行GDS。

步骤7 使用gsql连接第一套DWS集群。

1. 执行exit切换root用户,进入ECS的/opt目录,导入gsql的环境变量。

exit cd /opt

source gsql_env.sh

2. 进入/opt/bin目录,使用gsql连接第一套DWS集群。

cd /opt/bin

gsql -d gaussdb -h 192.168.0.8 -p 8000 -U dbadmin -W Demo@123456 -r – -d: 连接的数据库名,本例为默认数据库gaussdb。

CREATE USER leo WITH PASSWORD "Bigdata@123";

ALTER USER leo USEFT;

DROP FOREIGN TABLE IF EXISTS product_info_ext;

CREATE FOREIGN TABLE product_info_ext

product_comment_time date , product_comment_num integer ,

product_comment_content varchar(200) ) WITH (

orientation = column, compression=middle

) DISTRIBUTE BY hash (product_id);

步骤11 从GDS外表导入数据,并查询,数据导入成功。

INSERT INTO product_info SELECT * FROM product_info_ext ; SELECT count(*) FROM product_info;

----结束

通过外表导入远端 DWS 数据

步骤1 参见步骤7在ECS上连接第二套集群,其中连接地址改为第二套集群的地址,本例为 192.168.0.86。

步骤2 创建普通用户jim,并赋予创建外表和server的权限。FOREIGN DATA WRAPPER固定 为gc_fdws

CREATE USER jim WITH PASSWORD "Bigdata@123";

ALTER USER jim USEFT;

GRANT ALL ON FOREIGN DATA WRAPPER gc_fdw TO jim;

步骤3 切换到jim用户,创建server。

SET ROLE jim PASSWORD "Bigdata@123";

CREATE SERVER server_remote FOREIGN DATA WRAPPER GC_FDW OPTIONS (address '192.168.0.8:8000,192.168.0.158:8000' ,

dbname 'gaussdb', username 'leo', password 'Bigdata@123' );

● address:第一套集群的两个内网IP和端口,参见步骤6获取,本例为 192.168.0.8:8000,192.168.0.158:8000。

● dbname:连接的第一套集群的数据库名,本例为gaussdb。

● username:连接的第一套集群的用户名,本例为leo。

● password:用户名密码,本例为Bigdata@123。

步骤4 创建外表。

须知

外表的字段和约束,必须与待访问表的字段和约束保持一致。

CREATE FOREIGN TABLE region ( 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

server_remote OPTIONS

( schema_name 'leo', table_name 'product_info', encoding 'utf8'

);

● SERVER:上一步创建的server的名称,本例为server_remote。

● schema_name:待访问的第一套集群的schema名称,本例为leo。

● table_name:待访问的第一套集群的表名,参见步骤10获取,本例为 product_info。

● encoding:保持与第一套集群的数据库编码一致,参见步骤9获取,本例为utf8。

步骤5 查看创建的server和外表。

\des+ server_remote

\d+ region

步骤6 创建本地表。

须知

表的字段和约束,必须与待访问表的字段和约束保持一致。

CREATE TABLE local_region

( product_price integer not null, product_id char(30) not null, 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) )

WITH (

orientation = column, compression=middle

) DISTRIBUTE BY hash (product_id);

步骤7 通过外表导入数据到本地表。

INSERT INTO local_region SELECT * FROM region;

SELECT * FROM local_region;

步骤8 您也可以直接查询外表而无需将数据导入。

SELECT * FROM region;

----结束

2 开发设计