写点什么

云小课 | 大数据融合分析:GaussDW(DWS) 轻松导入 MRS-Hive 数据源

发布于: 2021 年 05 月 18 日

摘要:通过建立 GaussDB(DWS)与 MRS 的连接,支持数据仓库服务 SQL on Hadoop,以外表方式实现 Hive 数据的快捷导入,满足大数据融合分析的应用场景。


本文分享自华为云社区《【云小课】EI第17课 大数据融合分析:GaussDB(DWS)轻松导入MRS-Hive数据源》,原文作者:Hi,EI 。



​大数据融合分析时代,GaussDB(DWS)如需访问 MRS 数据源,该如何实现?本期云小课带您开启 MRS 数据源之门,通过远程读取 MRS 集群 Hive 上的 ORC 数据表完成数据导入 DWS。



准备环境

已创建 DWS 集群,需确保 MRS 和 DWS 集群在同一个区域、可用区、同一 VPC 子网内,确保集群网络互通。

基本流程

本实践预计时长:1 小时,基本流程如下:

1、创建 MRS 分析集群(选择 Hive、Spark、Tez 组件)。

2、通过将本地 txt 数据文件上传至 OBS 桶,再通过 OBS 桶导入 Hive,并由 txt 存储表导入 ORC 存储表。

3、创建 MRS 数据源连接。

4、创建外部服务器。

5、创建外表。

6、通过外表导入 DWS 本地表。

创建 MRS 分析集群

1.登录华为云控制台华为云控制台华为云控制台,选择“EI 企业智能 > MapReduce 服务”,单击“购买集群”,选择“自定义购买”,填写软件配置参数,单击“下一步”。



​2.填写硬件配置参数,单击“下一步”。



​3.填写高级配置参数如下表,单击“立即购买”,等待约 15 分钟,集群创建成功。



准备 MRS 的 ORC 表数据源

1.本地 PC 新建一个 product_info.txt,并拷贝以下数据,保存到本地。

100,XHDK-A-1293-#fJ3,2017-09-01,A,2017 Autumn New Shirt Women,red,M,328,2017-09-04,715,good205,KDKE-B-9947-#kL5,2017-09-01,A,2017 Autumn New Knitwear Women,pink,L,584,2017-09-05,406,very good!300,JODL-X-1937-#pV7,2017-09-01,A,2017 autumn new T-shirt men,red,XL,1245,2017-09-03,502,Bad.310,QQPX-R-3956-#aD8,2017-09-02,B,2017 autumn new jacket women,red,L,411,2017-09-05,436,It's really super nice150,ABEF-C-1820-#mC6,2017-09-03,B,2017 Autumn New Jeans Women,blue,M,1223,2017-09-06,1200,The seller's packaging is exquisite200,BCQP-E-2365-#qE4,2017-09-04,B,2017 autumn new casual pants men,black,L,997,2017-09-10,301,The clothes are of good quality.250,EABE-D-1476-#oB1,2017-09-10,A,2017 autumn new dress women,black,S,841,2017-09-15,299,Follow the store for a long time.108,CDXK-F-1527-#pL2,2017-09-11,A,2017 autumn new dress women,red,M,85,2017-09-14,22,It's really amazing to buy450,MMCE-H-4728-#nP9,2017-09-11,A,2017 autumn new jacket women,white,M,114,2017-09-14,22,Open the package and the clothes have no odor260,OCDA-G-2817-#bD3,2017-09-12,B,2017 autumn new woolen coat women,red,L,2004,2017-09-15,826,Very favorite clothes980,ZKDS-J-5490-#cW4,2017-09-13,B,2017 Autumn New Women's Cotton Clothing,red,M,112,2017-09-16,219,The clothes are small98,FKQB-I-2564-#dA5,2017-09-15,B,2017 autumn new shoes men,green,M,4345,2017-09-18,5473,The clothes are thick and it's better this winter.150,DMQY-K-6579-#eS6,2017-09-21,A,2017 autumn new underwear men,yellow,37,2840,2017-09-25,5831,This price is very cost effective200,GKLW-l-2897-#wQ7,2017-09-22,A,2017 Autumn New Jeans Men,blue,39,5879,2017-09-25,7200,The clothes are very comfortable to wear300,HWEC-L-2531-#xP8,2017-09-23,A,2017 autumn new shoes women,brown,M,403,2017-09-26,607,good100,IQPD-M-3214-#yQ1,2017-09-24,B,2017 Autumn New Wide Leg Pants Women,black,M,3045,2017-09-27,5021,very good.350,LPEC-N-4572-#zX2,2017-09-25,B,2017 Autumn New Underwear Women,red,M,239,2017-09-28,407,The seller's service is very good110,NQAB-O-3768-#sM3,2017-09-26,B,2017 autumn new underwear women,red,S,6089,2017-09-29,7021,The color is very good 210,HWNB-P-7879-#tN4,2017-09-27,B,2017 autumn new underwear women,red,L,3201,2017-09-30,4059,I like it very much and the quality is good.230,JKHU-Q-8865-#uO5,2017-09-29,C,2017 Autumn New Clothes with Chiffon Shirt,black,M,2056,2017-10-02,3842,very good复制代码
复制代码

2.登录 OBS 控制台,单击“创建桶”,填写以下参数,单击“立即创建”。



​3.等待桶创建好,单击桶名称,选择“对象 > 上传对象”,将 product_info.txt 上传至 OBS 桶。

4.切换回 MRS 控制台,单击创建好的 MRS 集群名称,进入“概览”,单击“IAM 用户同步”所在行的“单击同步”,等待约 5 分钟同步完成。

5.回到 MRS 集群页面,单击“节点管理”,单击任意一台 master 节点,进入该节点页面,切换到“弹性公网 IP”,单击“绑定弹性公网 IP”,勾选已有弹性 IP 并单击“确定”,如果没有,请创建。记录此公网 IP。

6.确认主 master 节点。

  • 使用 SSH 工具以 root 用户登录以上节点,root 密码为 Huawei_12345,切换到 omm 用户。

su - omm

  • 执行以下命令查询主 master 节点,回显信息中“HAActive”参数值为“active”的节点为主 master 节点。

sh${BIGDATA_HOME}/om-0.0.1/sbin/status-oms.sh

7.使用 root 用户登录主 master 节点,切换到 omm 用户,并进入 Hive 客户端所在目录。

su - omm

cd /opt/client

8.在 Hive 上创建存储类型为 TEXTFILE 的表 product_info。

  • 在/opt/client 路径下,导入环境变量。

sourcebigdata_env

  • 登录 Hive 客户端。

beeline

  • 依次执行以下 SQL 语句创建 demo 数据库及表 product_info。

    CREATE DATABASE demo;USE demo;DROP TABLE product_info;

    CREATE TABLE product_info(product_price int 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 int ,product_comment_time date ,product_comment_num int ,product_comment_content varchar(200))row format delimited fields terminated by ','stored as TEXTFILE

9.将 product_info.txt 数据文件导入 Hive。

  • 切回到 MRS 集群,单击“文件管理”,单击“导入数据”。

  • OBS 路径:选择上面创建好的 OBS 桶名,找到 product_info.txt 文件,单击“是”。

  • HDFS 路径:选择/user/hive/warehouse/demo.db/product_info/,单击“是”。

  • 单击“确定”,等待导入成功,此时 product_info 的表数据已导入成功。

10.创建 ORC 表,并将数据导入 ORC 表。

  • 执行以下 SQL 语句创建 ORC 表。

    DROP TABLE product_info_orc;

    CREATE TABLE product_info_orc(product_price int 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 int ,product_comment_time date ,product_comment_num int ,product_comment_content varchar(200))row format delimited fields terminated by ','stored as orc;

  • 将 product_info 表的数据插入到 Hive ORC 表 product_info_orc 中。

    insert into product_info_orc select * from product_info;

  • 查询 ORC 表数据导入成功。

    select * from product_info_orc;

创建 MRS 数据源连接

1. 登录 DWS 管理控制台,单击已创建好的 DWS 集群,确保 DWS 集群与 MRS 在同一个区域、可用分区,并且在同一 VPC 子网下。

2. 切换到“MRS 数据源”,单击“创建 MRS 数据源连接”。

3. 选择前序步骤创建名为的“MRS01”数据源,用户名:admin,密码:Huawei@12345,单击“确定”,创建成功。



创建外部服务器

1. 使用 Data Studio 连接已创建好的 DWS 集群。

2. 新建一个具有创建数据库权限的用户 dbuser:

CREATE USER dbuser WITH CREATEDB PASSWORD "Bigdata@123";复制代码
复制代码

​3. 切换为新建的 dbuser 用户:

SET ROLE dbuser PASSWORD "Bigdata@123";复制代码
复制代码

​4. 创建新的 mydatabase 数据库:

CREATE DATABASE mydatabase;复制代码
复制代码

​5. 执行以下步骤切换为连接新建的 mydatabase 数据库。

  • 在 Data Studio 客户端的**“对象浏览器”**窗口,右键单击数据库连接名称,在弹出菜单中单击“刷新”,刷新后就可以看到新建的数据库。

  • 右键单击“mydatabase”数据库名称,在弹出菜单中单击“打开连接”。

  • 右键单击“mydatabase”数据库名称,在弹出菜单中单击“打开新的终端”,即可打开连接到指定数据库的 SQL 命令窗口,后面的步骤,请全部在该命令窗口中执行。

6. 为 dbuser 用户授予创建外部服务器的权限:

GRANT ALL ON FOREIGN DATA WRAPPER hdfs_fdw TO dbuser;复制代码
复制代码

​其中 FOREIGN DATA WRAPPER 的名字只能是 hdfs_fdw,dbuser 为创建 SERVER 的用户名。

7. 执行以下命令赋予用户使用外表的权限。

ALTER USER dbuser USEFT;复制代码
复制代码

​8. 切换回 Postgres 系统数据库,查询创建 MRS 数据源后系统自动创建的外部服务器。

SELECT * FROM pg_foreign_server;复制代码
复制代码

​返回结果如:

                     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:9820,192.168.1.218:9820",hdfscfgpath=/MRS/8f79ada0-d998-4026-9020-80d6de2692ca,type=hdfs}(3 rows)         复制代码
复制代码

​9. 切换到 mydatabase 数据库,并切换到 dbuser 用户。

SET ROLE dbuser PASSWORD "Bigdata@123";复制代码
复制代码

​10. 创建外部服务器。

SERVER 名字、地址、配置路径保持与 8 一致即可。

CREATE SERVER hdfs_server_8f79ada0_d998_4026_9020_80d6de2692ca FOREIGN DATA WRAPPER HDFS_FDW OPTIONS (address '192.168.1.245:9820,192.168.1.218:9820',   //MRS管理面的Master主备节点的内网IP,可与DWS通讯。hdfscfgpath '/MRS/8f79ada0-d998-4026-9020-80d6de2692ca',type 'hdfs');复制代码
复制代码

​11. 查看外部服务器。

SELECT * FROM pg_foreign_server WHERE srvname='hdfs_server_8f79ada0_d998_4026_9020_80d6de2692ca';复制代码
复制代码

​返回结果如下所示,表示已经创建成功:

                     srvname                      | srvowner | srvfdw | srvtype | srvversion | srvacl |                                                     srvoptions--------------------------------------------------+----------+--------+---------+------------+--------+--------------------------------------------------------------------------------------------------------------------- hdfs_server_8f79ada0_d998_4026_9020_80d6de2692ca |    16476 |  13685 |         |            |        | {"address=192.168.1.245:9820,192.168.1.218:29820",hdfscfgpath=/MRS/8f79ada0-d998-4026-9020-80d6de2692ca,type=hdfs}(1 row)              复制代码
复制代码

创建外表

1. 获取 Hive 的 product_info_orc 的文件路径。

  • 登录 MRS 管理控制台。

  • 选择“集群列表 > 现有集群”,单击要查看的集群名称,进入集群基本信息页面。

  • 单击“文件管理”,选择“HDFS 文件列表”。

  • 进入您要导入到 GaussDB(DWS)集群的数据的存储目录,并记录其路径。

图 1 在 MRS 上查看数据存储路径



​2. 创建外表。 SERVER 名字填写 10 创建的外部服务器名称,foldername 填写 1 查到的路径。

DROP FOREIGN TABLE IF EXISTS foreign_product_info;
CREATE FOREIGN TABLE foreign_product_info( 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) ) 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;复制代码
复制代码

执行数据导入

1. 创建本地目标表。

DROP TABLE IF EXISTS product_info;CREATE TABLE product_info(    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);复制代码
复制代码

​2. 从外表导入目标表。

INSERT INTO product_info SELECT * FROM foreign_product_info;复制代码
复制代码

​3. 查询导入结果。

SELECT * FROM product_info;复制代码
复制代码

那么,实践一下,教您快速上手数据仓库服务~

详情请戳这里了解。


点击关注,第一时间了解华为云新鲜技术~


发布于: 2021 年 05 月 18 日阅读数: 278
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
云小课 | 大数据融合分析:GaussDW(DWS)轻松导入MRS-Hive数据源