小白篇(十二):sqoop export指令实操

获取原文

 

简短介绍


大家好,天气转凉了。注意加衣服哦。最近感冒的小伙伴特别多(好吧,我也是其中一员)。今天为大家分享下sqoop export指令。

 

 

01-集群数据导出至关系型

sqoop export指令的作用就是,将集群HDFS中数据导出至关系型数据库中。

我们这还是以mysql为例。

 

  • 一、将集群textfile类型表导出到mysql中。

1、创建集群测试表和数据

-- hive创建一张表,默认是textfile类型的
create table if not exists dc_dev.export_txt_demo
(
name    string,
address string
);
-- 创建测试数据
insert into dc_dev.export_txt_demo values('测试1','上海');
insert into dc_dev.export_txt_demo values('测试2','北京');

 

2、创建mysql接收表

-- 创建接收表
create table demo.export_txt_demo
(
name varchar(10),
address varchar(10)
);

 

3、在集群中运行sqoop export 指令导出集群数据

sqoop export --connect 'jdbc:mysql://10.100.157.28:3306/demo' \
--username 'root' \
--password 'jfdev123' \
--table 'export_txt_demo' \
--export-dir  /user/hive/warehouse//dc_dev.db/export_txt_demo \
--input-fields-terminated-by '\001' \
--input-null-string '\\N' \
--input-null-non-string '\\N'

参数说明:
--connect '数据库连接' \
--username '数据库账号' \
--password '数据库密码' \
--table '数据库表名' \
--export-dir  集群hdfs中导出的数据目录 \
--input-fields-terminated-by '分隔符,textfile类型默认\001' \
--input-null-string '空值处理:\\N' \
--input-null-non-string '空值处理:\\N'

## “--export-dir” 参数是数据在hdfs中的路径
## 可在hive中,通过 show create 表(即:show create dc_dev.export_txt_demo)
## 即可知道表数据在hdfs中的位置

说明:

① 导出表(集群中的),接收表(关系型中的)。都必须先存在,才能通过sqoop exprot导出。

② 上面示例是导出的textfile类型的表。

 

 

  • 二、将集群parquet类型表导出到mysql中。

1、集群中创建parquet测试表

-- hive创建一张表parquet类型的表
create table if not exists dc_dev.export_par_demo
(
name    string,
address string
) STORED AS parquet; -- 观察这里制定建表类型
-- 创建测试数据
insert into dc_dev.export_par_demo values('par测试1','par上海');
insert into dc_dev.export_par_demo values('par测试2','par北京');

 

2、创建mysql接收表

-- 创建接收表
create table demo.export_par_demo
(
name varchar(10),
address varchar(10)
);

 

3、在集群中运行sqoop export 指令导出集群数据

sqoop export --connect 'jdbc:mysql://10.100.157.28:3306/demo' \
--username 'root' \
--password 'jfdev123' \
--table 'export_par_demo' \
--hcatalog-database dc_dev \
--hcatalog-table export_par_demo \
--num-mappers 1 \
--input-null-string '\\N' \
--input-null-non-string '\\N'

参数说明:
--connect '数据库连接' \
--username '数据库账号' \
--password '数据库密码' \
--table '数据库表名' \
--hcatalog-database 'hive库名' \
--hcatalog-table 'hive表名' \
--num-mappers '默认启动MapReduce数量:1个,不宜太多数据库顶不住' \
--input-null-string '空值处理:\\N' \
--input-null-non-string '空值处理:\\N'

说明:与textfile导出类似。

① 导出表(集群中的),接收表(关系型中的)。都必须先存在,才能通过sqoop exprot导出。

② 上面示例是导出的parquet类型的表。

③ 使用textfile导出 比 parquet导出速度快。因为parquet是压缩文件,需要先解压在导出

 

 

02-小结

使用sqoop export是不是很简单就将集群数据导出到数据库了呢?大家有想过重复导出的问题没有?其实我们实际工作中,都会遇到需要重复执行一个指令的时候。有想过怎么处理吗?这里是不是可以结合shell脚本来一起使用呢?东西是死的,人是活的。一定要学会灵活运用!

 

sqoop export更多参数使用:

图片截自sqoop.apache.org

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值