Sqoop的简单使用案例之数据导出
【摘要】 Sqoop的简单使用案例之数据导出
Sqoop的简单使用案例之数据导出
写在前面
- Hadoop版本:
Hadoop-3.1.3
- Linux版本:
CentOS7.5
- Sqoop版本:
Sqoop-1.4.6
- MySQL版本:
MySQL5.7
- Hive版本:
Hive-3.1.2
导出数据的演示说明
在Sqoop中,「导出」概念指:从大数据集群(HDFS,HIVE,HBASE)向非大数据集群(RDBMS)中传输数据,叫做:导出,即使用
export
这个关键字。
以下有关sqoop的数据导出命令都需要先进入到sqoop的安装目录下
导出的前置说明
-
该导出工具export是将一组文件从HDFS导出到RDBMS。目标表
必须已经存在
于数据库中。输入文件被读取并根据用户指定的分隔符
解析成一组记录。 -
默认的操作是将这些转化为一组
INSERT
语句,将记录注入到数据库中。在更新模式
中,Sqoop将生成UPDATE语句,替换数据库中的现有记录;在调用模式
中,Sqoop将为每条记录进行存储过程调用。
export的基本语法
$ sqoop export (generic-args) (export-args)
$ sqoop-export (generic-args) (export-args)
注意:尽管Hadoop通用参数必须在任何出口参数之前,但出口参数可以以任何顺序输入。
HIVE/HDFS数据导出到RDBMS
- 确定MySQL服务开启正常
通过sqoop将Hive存储的数据导出到MySQL关系型数据库的shell命令如下所示:
[whybigdata@node01 sqoop-1.4.6]# bin/sqoop export \
--connect jdbc:mysql://hadoop102:3306/company \
--username root \
--password 000000 \
--table staff \
--num-mappers 1 \
--export-dir /user/hive/warehouse/staff_hive \
--input-fields-terminated-by "\t"
注意:MySQL中如果表不存在,不会自动创建,所以需要提前确保数据导出到MySQL的数据表已经存在
当然,我们除了通过上述的方式将Hive或者hdfs上的数据导出到关系型数据库MySQL之外,我们还可以通过编写脚本的方式来将数据导出到关系型数据库MySQL,下面我们将来演示这一个实验操作。
脚本打包
使用opt格式的文件打包sqoop命令,然后执行
- 创建一个
.opt
文件
[whybigdata@node01 sqoop-1.4.6]# mkdir opt
[whybigdata@node01 sqoop-1.4.6]# touch opt/job_HDFS2RDBMS.opt
- 编写sqoop脚本
[whybigdata@node01 sqoop-1.4.6]# vim opt/job_HDFS2RDBMS.opt
## 添加如下内容
export
--connect jdbc:mysql://hadoop102:3306/company
--username root
--password 000000
--table staff
--num-mappers 1
--export-dir /user/hive/warehouse/staff_hive
--input-fields-terminated-by "\t"
- 执行该脚本
[whybigdata@node01 sqoop-1.4.6]# bin/sqoop --options-file opt/job_HDFS2RDBMS.opt
数据导出失败的原因分析
数据导出往往可能因为某些原因而导致失败,可能的原因列举如下:
- 由于硬件的故障,或者服务器软件崩溃导致hadoop集群和关系型数据库之间的连接不成功
- 导出的数据原本是不完整或者是畸形的
- 导出的shell命令书写有误(例如:分隔符、端口、数据路径等等)
- 容量问题:比如是内存或虚拟机的磁盘空间不足。
全文结束!
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)