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 ' ' 指定字段间用什么连接,默认是逗号
--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 ' 01' hive仓库里的数据默认分隔符是' 01' 到处是需要指定 默认以逗号分割