GaussDB(DWS)MRS、OBS数据源创建与数据导入

举报
键盘er 发表于 2024/02/18 16:40:48 2024/02/18
【摘要】 本文介绍了如何将MRS和OBS中的数据导入到DWS中,包括节点连接准备、在Hive中创建数据、登录DWS数据库并导入等步骤。同时,还介绍了如何上传数据到OBS,并创建外表和执行数据导入等操作。这些操作可以帮助用户更好地管理和利用数据资源。

GaussDB(DWS)MRS、OBS数据源创建与数据导入

前言

本文介绍了如何将MRS和OBS中的数据导入到DWS中,包括节点连接准备、在Hive中创建数据、登录DWS数据库并导入等步骤。同时,还介绍了如何上传数据到OBS,并创建外表和执行数据导入等操作。这些操作可以帮助用户更好地管理和利用数据资源。

1 MRS数据导入DWS

在开始MRS向DWS导入数据前先确保已有同一VPC下MRS、DWS集群

1.1 节点连接准备

1、创建好MRS数据源后,进入MRS数据源详情页面,可以看到节点信息,
img

2、点击Master1,设置安全组(在安全组中设置any规则);绑定弹性IP
img

3、从Master1绑定的EIP,远程登录到Master1节点或者可以用MobaXterm工具连接MRS绑定的EIP

常见错误 :Eip能ping通,但是ssh linux@EIP登录失败 可以采用私有秘钥登录

登录到节点上后,依次执行:
切换root:sudo -s;
cd /opt/client;
source bigdata_env;
kinit admin
查看是否是安全模式:进入MRS数据源详情页面查看Kerberos认证状态,若是关闭则为普通模式,否则是安全模式。

1.2 在hive中创建数据

1、beeline进入hive数据库 创建表并写入数据
eg:
create table lxn01 (id int,name char(10))
stored as orc;
MRS数据存储格式:orc
insert into lxn01 values(1,‘dwejfwe’);

2、退出数据库(!q或者ctr+Z),执行命令hdfs dfs -ls /user/hive/warehouse/lxn01,查看该路径下是否有所创建的表,后面创建外表时会用到该路径(/user/hive/warehouse/lxn01)
显示数据,数据文件00000

1.3 登录DWS数据库并导入

1、可以在前台页面上直接下载客户端redHat,然后将下载的压缩包拖至工具上,在sftp tab上,然后进入相应的目录下,执行tar –xvf dws_client_redhat_x64.tar.gz 解压缩客户端。

source gsql_env.sh (<—进入到解压后的客户端路径下执行)
gsql -d postgres -h 集群内网访问地址 -U 管理员用户 -p 数据仓库端口 _W 集群密码
192.168.1.23
gsql -d postgres -h 192.168.1.23 -U dbadmin -p 8000 -W Bigdata_2014

此处的集群内网地址可以在前台页面查看创建MRS数据源的集群的内网地址及端口,

查看已创建的MRS数据源连接:select srvname,srvoptions from pg_foreign_server;
2、创建外表:

create foreign table TABLE_NAME
(
COLUMN_NAME1             COLUMN_TYPE1               ,
COLUMN_NAME2             COLUMN_TYPE2               
) server FOREIGN_SERVER_NAME
OPTIONS (format 'orc', foldername 'FILE_PATH') distribute by roundrobin;
create foreign table lxn04 (id int,name char(10)) server hdfs_server_b1809755_b17b_49ba_bc46_d1f789055949 OPTIONS (format 'orc', foldername '/user/hive/warehouse/lxn01') distribute by roundrobin;

如果执行select srvname,srvoptions from pg_foreign_server; 没有hdfs_server_****** ,则该集群没有创建MRS数据源。
FOREIGN_SERVER_NAME :
‘FILE_PATH’ :步骤7中的路径
Select * from 外表 ------ 可以从外表查询数据
再新建DWS自己的表:create table lxn06(id int,name char(10));
3、将MRS数据导入到DWS:
insert into lxn06(DWS数据库上建的表) select * from lxn_foreign(DWS数据库上建的外表);
insert into lxn06 select * from lxn04;

2 OBS数据导入DWS

2.1 上传数据到OBS

GaussDB(DWS)支持将OBS上的TEXT、CSV、ORC和CARBONDATA格式的数据导入到集群中。提前准备一个数据文件。

  • 将上面准备的3个CSV格式的数据源文件存储到OBS桶中。
  • 登录OBS管理控制台。单击“服务列表”,选择“对象存储服务”,打开OBS管理控制台页面。创建桶。
  • 新建文件夹。
  • 上传文件

2.2 创建外表

  • 连接GaussDB(DWS)数据库。
  • 创建外表
DROP FOREIGN TABLE IF EXISTS product_info_ext;
CREATE FOREIGN TABLE product_info_ext
(
    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 gsmpp_server 
OPTIONS(
LOCATION 'obs://mybucket/input_data/product_info | obs://mybucket02/input_data/product_info',
FORMAT 'CSV' ,
DELIMITER ',',
ENCODING 'utf8',
HEADER 'false',
ACCESS_KEY 'access_key_value_to_be_replaced',
SECRET_ACCESS_KEY 'secret_access_key_value_to_be_replaced',
FILL_MISSING_FIELDS 'true',
IGNORE_EXTRA_DATA 'true'
)
READ ONLY 
LOG INTO product_info_err 
PER NODE REJECT LIMIT 'unlimited';
  • 返回如下信息表示创建成功:
    CREATE FOREIGN TABLE

  • 外表中相关参数的设置说明如下:

SERVER
无需修改,即固定设为gsmpp_server。

LOCATION
OBS路径由“obs://”、桶名和文件路径组成,即为:obs://<bucket_name>/<file_path>

FORMAT
此教程中待入库的为CSV格式的数据,故设为CSV。如果是其他格式,请对应替换。

DELIMITER
此教程中数据源文件中的数据是以“,”分隔的。

ENCODING
此教程中数据源文件编码格式为UTF-8。

HEADER
此参数用于指定数据文件是否包含标题行。该参数只针对CSV格式的数据文件有效。准备数据文件中的数据文件第一行不是标题行(即表头),故设为“false”。

ACCESS_KEY和SECRET_ACCESS_KEY
用户访问OBS的AK和SK,请根据实际替换。获取访问密钥,请登录管理控制台,将鼠标移至右上角的用户名,单击“我的凭证”,然后在左侧导航树单击“访问密钥”。在访问密钥页面,可以查看已有的访问密钥ID(即AK),如果要同时获取AK和SK,可以单击“新增访问密钥”创建并下载访问密钥。

FILL_MISSING_FIELDS
当数据导入时,数据源文件中一行的最后一个字段缺失的处理方式。默认为false/off。本教程中设为“true”。

true/on:表示最后一个字段缺失时,把最后一个字段的值设置为NULL,不报错。
false/off:表示最后一个字段缺失时,做如下报错提示:missing data for column “tt”。
例如,源数据文件product_info2.csv中第2条记录的最后一个字段段“product_comment_content”缺失。当FILL_MISSING_FIELDS设为false/off

IGNORE_EXTRA_DATA
数据源文件中的字段比外表定义列数多时,是否忽略多出的列。默认为false/off。本教程中设为“true”。

true/on:数据源文件中字段比外表定义列数多,则忽略行尾多出来的列。不报错
false/off:若数据源文件中字段比外表定义列数多,做如下报错提示:extra data after last expected column。
例如,源数据文件product_info2.csv中第3条记录比外表定义列数多。当IGNORE_EXTRA_DATA设为false/off时,导入数据时错误表中会有类

READ ONLY
外表的语法定义通用于从OBS导入数据到GaussDB(DWS)集群和从集群导出数据到OBS。数据导入集群时,请将外表设为READ ONLY;导出时,请设为WRITE ONLY。

LOG INTO
指定记录导入过程中数据格式错误信息的错误表。只需指定表名,无需预先创建。GaussDB(DWS)在执行创建外表语句时会自动创建该表,并在删除外表时对其自动删除。

PER NODE REJECT LIMIT
指定本次数据导入过程中每个DN实例上允许出现的数据格式错误的数量,如果有一个DN实例上的错误数量大于设定值,本次导入失败,报错退出。

本教程设置为“unlimited”,即接受导入过程中所有数据格式错误。

2.3 执行数据导入

1、创建外表

CREATE FOREIGN TABLE date_dim_in_csv3(d_date_sk integer,d_date_id char(16),d_date date,d_month_seq integer,d_week_seq integer,d_quarter_seq integer,d_year integer,d_dow integer,d_moy integer,d_dom integer,d_qoy integer,d_fy_year integer,d_fy_quarter_seq integer,d_fy_week_seq integer,d_day_name char(9) ,d_quarter_name char(6),d_holiday char(1),d_weekend char(1),d_following_holiday char(1),d_first_dom integer,d_last_dom integer,d_same_day_ly integer,d_same_day_lq integer,d_current_day char(1),d_current_week char(1),d_current_month char(1),d_current_quarter char(1),d_current_year char(1)) SERVER gsmpp_server OPTIONS(location 'gsobs://obs-data.obs.ctyun.cn/data/date_dim.dat' ,FORMAT 'TEXT' ,DELIMITER '|', encoding 'utf8',access_key '$access_key ',secret_access_key '$secret_access_key ');

2、在GaussDB(DWS)数据库中,创建一个名为catalog_page_scv的表,用于存储从OBS导入的数据。

DROP TABLE IF EXISTS catalog_page_scv;

CREATE TABLE catalog_page_scv(d_date_sk INT,d_date_id char(16),d_date date,d_month_seq INT,d_week_seq INT,d_quarter_seq INT,d_year INT,d_dow INT,d_moy INT,d_dom INT,d_qoy INT,d_fy_year INT,d_fy_quarter_seq INT,d_fy_week_seq INT,d_day_name char(9),d_quarter_name char(6),d_holiday char(1),d_weekend char(1),d_following_holiday char(1),d_first_dom INT,d_last_dom INT,d_same_day_ly INT,d_same_day_lq INT,d_current_day char(1),d_current_week char(1),d_current_month char(1),d_current_quarter char(1),d_current_year char(1));

3、执行INSERT命令,通过外表date_dim_in_csv3将OBS上的数据导入到目标表catalog_page_scv 中:

insert into catalog_page_scv select * from date_dim_in_csv3;

若出现以下类似信息,说明数据导入成功。
img

执行SELECT命令查询目标表product_info,查看从OBS导入到GaussDB(DWS)中的11.png
img
查询结果显示如中所示的数据,表示导入成功。
img

3 总结

除了上述两种数据导入方式,GaussDB(DWS)提供了GDS工具等一系列数据导入导出工具,可根据场景不同选择合适的工具。

4 参考文档

GaussDB for DWS 数据融合系列第四期:OBS导入数据: https://bbs.huaweicloud.cn/blogs/242254
GaussDB(DWS) 数据融合系列第三期:MRS数据导入DWS: https://bbs.huaweicloud.cn/blogs/239961

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。