Sqoop导入数据之import的基本使用


前言

提示:本教程使用环境为:
CentOS6.5
CDH5.3.6
本教程将演示由Mysql到HDFS和Mysql到Hive两种导入过程,
由于版本不一致可能会有操作上的不同。如果目前仍没有搭好Sqoop环境,请看最简便CentOS6.5下CDH版本sqoop安装步骤


一、Sqoop是什么,import操作是怎样?

Sqoop - “SQL到Hadoop和Hadoop到SQL”,
sqoop是apache旗下一款"Hadoop和关系数据库服务器之间传送数据"的工具。
导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;
导出数据:从Hadoop的文件系统中导出数据到关系数据库mysql等。
在这里插入图片描述
可以看到,Sqoop的import过程主要是由map实现的,而不经过reduce过程。本教程选取Mysql数据库作为RDBMS的代表,所以请想动手验证的各位确保自己安装好了Mysql环境与驱动。

二、Mysql到HDFS

1.创建Mysql表

首先命令行输入mysql -u用户名 -p密码 ;进入mysql,输入use 数据库名 ;选定数据库,然后创建下表:

mysql> CREATE TABLE emp1
    -> (
    -> id INT(11)primary key,
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT
    -> );

使用desc emp1 ;查看表结构
在这里插入图片描述

2.插入数据

表格创建好后还没有数据,我们要随便往里写一些。

INSERT INTO emp1 VALUES(1,'Joey',1,3000);
INSERT INTO emp1 VALUES(2,'Chandler',1,5000);
INSERT INTO emp1 VALUES(3,'Mary',2,8000);
INSERT INTO emp1 VALUES(4,'Lip',2,3000);

然后查看表数据是否填写成功:

在这里插入图片描述

3.import到HDFS

首先启动好我们的HDFS,
在这里插入图片描述
然后进入Sqoop安装目录导入数据:

bin/sqoop import \
--connect jdbc:mysql://hadoop:3306/test \
--username root \
--password password \
--table emp1\
--m 1

其中jdbc后注意更改为自己的主机名和数据库名,三四行改为自己的mysql用户名和密码
我们观察命令运行过程可以看到sqoop底层运行的就是mapreduce,它是将这个保存为一个emp1.jar的包来执行,现在我们可以用bin/hdfs dfs -cat /user/root/emp1/part-m-00000命令查看结果
在这里插入图片描述
成功导入!

三、Mysql到Hive

过程与前面类似,只需添加上hive-import

bin/sqoop import \
--connect "jdbc:mysql://hadoop:3306/test" \
--username root \
--password password \
--hive-import \
--fields-terminated-by ',' \
--table emp1 \
--m 1

执行完后我们进入hive的shell进行查看是否多了表
在这里插入图片描述
看到多了emp1这个表,输入select * from emp1 ;
在这里插入图片描述
发现数据已经成功导入,但其实我们清楚Hive的存储实际上没有改变文件格式,那么这个Hive的导入和HDFS的导入有何区别呢?我们进入HDFS目录进行查看:
在这里插入图片描述
发现HDFS的默认导入目录上也多了emp1这个目录,但只有执行成功的文件并没有数据,我们再进入warehouse目录查看
在这里插入图片描述
可以得出这个导入的底层实际实现还是将mysql表数据导入到了HDFS的默认目录,后调用hive元数据操作API接口,执行建表、将数据从临时目录导入到hive目录的操作。


总结

本节教程我们尝试了Sqoop的import功能,将Mysql数据导入到HDFS或Hive上,其中import还有更多的参数设置包括snappy压缩,存储格式调整等等希望大家多多尝试,一同学习进步!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值