Sqoop是用来实现结构型数据(如关系数据库)和Hadoop之间进行数据迁移的工具。它充分利用了MapReduce的并行特点以批处理的方式加快数据的传输,同时也借助MapReduce实现了容错。
一、sqoop下载
下载地址http://mirrors.shu.edu.cn/apache/sqoop/
下载sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
二、解压配置环境变量
将下载的sqoop传到linux中解压,在.bashrc中配置环境变量
三、修改配置文件
到sqoop中的conf中,复制sqoop-env-template.sh
cp sqoop-env-template.sh sqoop-env.sh
修改sqoop-env.sh的配置文件
到sqoop的bin的configure-sqoop中,注释掉下面的代码
四、查看是否安装成功
sqoop version
五、将mysql驱动复制到sqoop的lib目录
六、Sqoop的操作命令
1、用sqoop将mysql中的表数据导入HDFS中
sqoop import --connectjdbc:mysql://你的数据库ip/数据库名 --username root --password 数据库密码 --table 表名 --target-dir '要传HDFS中的路径' --m 1
--driver com.mysql.jdbc.Driver
例如:我要将mysql中wordpress数据库中的wp_terms表中的数据导入到HDFS中,–m表示MR进程数
sqoop import --connect jdbc:mysql://39.108.229.164:3306/wordpress --username root -password 123456 --table wp_terms --target-dir '/sqoop' --m 1 --driver com.mysql.jdbc.Driver
如果执行上面的命令出现下面的错误
是因为没有将mysql的驱动复制到lib中
等待MR作业完成
如果想要将整个数据库中的表全部导入到hdfs上使用import-all-tables命令
sqoop import-all-tables --connect jdbc:mysql://39.108.229.164:3306/wordpress --username root -password 123456 --target-dir '/sqoop' --m 1 --driver com.mysql.jdbc.Driver
如果想要指定所需的列:–columns
sqoop import --connect jdbc:mysql://39.108.229.164:3306/wordpress --username root -password 123456 --table wp_terms --columns '数据名,数据名' --driver com.mysql.jdbc.Driver
2、用sqoop将MySQL中表的数据传到Hive中
加上–hive-import
sqoop import –hive-import –connect jdbc:mysql://39.108.229.164:3306/wordpress –username root -password 123456 –table wp_terms –columns ‘数据名,数据名’ –driver com.mysql.jdbc.Driver –hive-table hi
–hive-table hive表名:表示将mysql中的数据导入到hive表名中
–where ‘导入条件’ :可以选择性导入表内容
–query ‘查询语句’:将查询的语句导入
3、用sqoop将Hive中的数据导出
使用export
sqoop export --connect jdbc:mysql://39.108.229.164:3306/wordpress --username root -password 123456 --table wp_te