GaussDB(DWS)MRS、OBS数据源创建与数据导入
GaussDB(DWS)MRS、OBS数据源创建与数据导入
前言
本文介绍了如何将MRS和OBS中的数据导入到DWS中,包括节点连接准备、在Hive中创建数据、登录DWS数据库并导入等步骤。同时,还介绍了如何上传数据到OBS,并创建外表和执行数据导入等操作。这些操作可以帮助用户更好地管理和利用数据资源。
1 MRS数据导入DWS
在开始MRS向DWS导入数据前先确保已有同一VPC下MRS、DWS集群
1.1 节点连接准备
1、创建好MRS数据源后,进入MRS数据源详情页面,可以看到节点信息,
2、点击Master1,设置安全组(在安全组中设置any规则);绑定弹性IP
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;
若出现以下类似信息,说明数据导入成功。
执行SELECT命令查询目标表product_info,查看从OBS导入到GaussDB(DWS)中的11.png
查询结果显示如中所示的数据,表示导入成功。
3 总结
除了上述两种数据导入方式,GaussDB(DWS)提供了GDS工具等一系列数据导入导出工具,可根据场景不同选择合适的工具。
4 参考文档
GaussDB for DWS 数据融合系列第四期:OBS导入数据: https://bbs.huaweicloud.com/blogs/242254
GaussDB(DWS) 数据融合系列第三期:MRS数据导入DWS: https://bbs.huaweicloud.com/blogs/239961
- 点赞
- 收藏
- 关注作者
评论(0)