您的位置:首页 > 运维架构

hadoop学习之sqoop(7):sqoop的安装与使用

2016-12-15 22:15 260 查看
sqoop是一款数据迁移工具,它能将数据在RDBMS(mysql,oracle...)和HDFS(hdfs,hive,hbase)之间互相传输,很方便。

一,安装

1,下载解压sqoop-1.4.6.bin--hadoop-2.0.4-alpha.tar.gz

2,修改配置文件

sqoop/conf mv sqoop-env.template.sh sqoop-env.sh
vim sqoop-env.sh

将hadoop,hive,hbase等的路径改为本机的路径。

3,将mysql-connector-java.jar文件复制到sqoop/lib文件夹下

二,将mysql中的表数据导入hdfs

1,mysql整个表导入hdfs

前提是mysql的test库中已有现成的表stu,如:

1,jimmy,25
2,angela,24

导入hdfs就执行如下命令:

bin/sqoop import --connect jdbc:mysql://node1:3306/test --username root --password 123456  --table stu --target-dir /user/sqoop/data_from_mysql


这样,mysql中的表数据就导入hdfs指定的目录下了。

注:命令要在sqoop的根目录下执行,一般hadoop的辅助工具(flume,azkaban,sqoop)都要求在根目录执行命令。还有,jdbc的协议中最好用主机名或ip地址,用localhost的话有可能报错。

2,mysql表按查询条件导入hdfs

bin/sqoop import --connect jdbc:mysql://node1:3306/test --username root --password 123456  --query 'select XXX,XXX from XXX where XXX and $CONDITIONS ' --target-dir /user/sqoop/data_from_mysql
即只需加一个--query,且不要--table,因为select语句里面会有表的名字。

3,mysql整张表导入到Hive表中

bin/sqoop import --connect jdbc:mysql://node1:3306/test --username root --password 123456  --table stu --hive-import


在1的基础上加个--hive-import即可,且不要--target-dir,因为hive表默认是导入/user/hive/warehouse/下的,即只能导入内部表。

4,mysql表按查询条件导入hive

(1)首先应按查询条件新建一个hive表(指定了字段分隔符为‘,’)

(2)然后倒入数据

bin/sqoop import --connect jdbc:mysql://node1:3306/test --username root --password 123456  --query 'select XXX,XXX from XXX where XXX and $CONDITIONS ' --hive-import--target-dir /user/hive/warehouse --hive-table stu2 --fields-terminated-by ','

注:导入语句指定的分隔符要和hive表的分隔符一致

5,mysql增量插入hdfs(暂不支持hive)

如:mysql表的id是升序的,以id为准,指定上次导入的最大id号,然后会把大于该id号的数据项导入到hdfs上
在(1)的基础上加上3个项:

--incremental append --check-column id --last-value 99
这样,就会把mysql表中id大于99的项,追加到hdfs目录下面。

三,hdfs数据导出到mysql表

首先,要按hdfs上数据的格式在mysql中创建目标表,

然后执行命令;

bin/sqoop export --connect jdbc:mysql://node1:3306/test --username root --password 123456 --table stu --export-dir /user/sqoop/stu指定要导出的mysql表--table,指定从哪里到处--export-dir
导出后即可在mysql中查看。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: