sqoop部署与使用

sqoop安装

1.下载并解压

scp sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz mini1:/root/apps/

tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C install

mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop

2.修改配置文件

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

export HADOOP_COMMON_HOME=/root/apps/hadoop/
export HADOOP_MAPRED_HOME=/root/apps/hadoop/
export HIVE_HOME=/root/apps/install/hive/

3.将mysql的驱动包加入到sqoop的lib目录下

cp /root/apps/mysql-connector-java-5.1.9.jar sqoop/lib/

导入数据

从mysql导入到hdfs

#执行命令
sqoop import --connect jdbc:mysql://192.168.38.3:3306/test --driver com.mysql.jdbc.Driver --username root --password 123456 --table emp --m 1

--table   导出哪张表的数据
--m		使用几个mapreduce
--target-dir  指定导入到hdfs上的哪个目录下
--where "city ='sec-bad'"  按条件导入数据
--query 'select id,name,deg from emp WHERE  id>1207 and $CONDITIONS'  根据sql查询结果导入数据
--fields-terminated-by '\t' 指定字段间用什么连接,默认是逗号
--split-by id  多个maptask时根据什么字段切片

--incremental append  以增量模式导入 
--check-column id 增量模式导入会检查id
--last-value 1208 指明上次导入的数据中最后的id值,增量导入会根据这个值导入此id之后的

#不指定输出目录时,默认输出路径是/user/用户名/表名/part-m-00000

报错:

Streaming result set com.mysql.jdbc.RowDataDynamic@73b090be is still active. 

解决(2种方法):

1.在执行命令中加入--driver com.mysql.jdbc.Driver
2.换一个比较新的驱动jar包,但不要用6.x的,百度到的相关资料说6.x的驱动包在这里也会报错,自己没有实验过。

从mysql导入到hive

sqoop import --connect jdbc:mysql://192.168.38.3:3306/test --driver com.mysql.jdbc.Driver --username root --password 123456 --table emp --hive-import --m 1

导出数据

导出数据到mysql,要求mysql中事先有那张表。

从hdfs导出数据到mysql

从hive导出数据只要将hdfs的目录改成hive仓库的目录即可

sqoop export \
--connect jdbc:mysql://192.168.38.3:3306/test \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
--table employee \
--export-dir /user/root/emp/

#参数说明
--export-dir   将哪个目录下的数据导出
--table	将数据导出到mysql的那张表
--fields-terminated-by '\001' hive仓库里的数据默认分隔符是'\001' 到处是需要指定  默认以逗号分割
posted @ 2018-06-03 20:56  py小杰  阅读(359)  评论(0编辑  收藏  举报