sqoop使用详解
1、sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。
导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;
导出数据:从Hadoop的文件系统中导出数据到关系数据库
2、将导入或导出命令翻译成mapreduce程序来实现
在翻译出的mapreduce中主要是对inputformat和outputformat进行定制
3、解压压缩包,修改启动脚本
$ cd $SQOOP_HOME/conf $ mv sqoop-env-template.sh sqoop-env.sh
打开sqoop-env.sh并编辑下面几行:
export HADOOP_COMMON_HOME=/soft/hadoop/ export HADOOP_MAPRED_HOME=/soft/hadoop/ export HIVE_HOME=/soft/hive
4、环境 sudo nano /etc/profile
export SQOOP_HOME=/soft/sqoop export PATH=$PATH:$SQOOP_HOME/bin
cp ~/app/hive/lib/mysql-connector-java-5.1.28.jar $SQOOP_HOME/lib/
$ cd $SQOOP_HOME/bin $ sqoop-version
5、建表
create database userdb; grant all privileges on userdb.* to 'sqoop'@'%' identified by 'sqoop'; grant all privileges on userdb.* to 'sqoop'@'localhost' identified by 'sqoop'; grant all privileges on userdb.* to 'sqoop'@'s201' identified by 'sqoop'; flush privileges; CREATE TABLE employee ( id INT NOT NULL PRIMARY KEY, name VARCHAR(20), deg VARCHAR(20), salary INT, dept VARCHAR(10));
6、验证
sqoop export --connect jdbc:mysql://hadoop2:3306/userdb --username sqoop --password sqoop --table employee --export-dir /emp --input-fields-terminated-by ','
7、sqoop从mysql导入数据到hdfs
$bin/sqoop import \ --connect jdbc:mysql://hadoop1:3306/userdb \ --username sqoop \ --password sqoop \ --table emp --m 1
导入到hive
bin/sqoop import --connect jdbc:mysql://hadoop1:3306/test --username sqoop --password sqoop --table emp --hive-import --m 1
bin/sqoop import \ --connect jdbc:mysql://hadoop1:3306/userdb \ --username sqoop \ --password sqoop \ --target-dir /queryresult \ --table emp_add --m 1
结果验证
$HADOOP_HOME/bin/hadoop fs -cat /queryresult/part-m-*
导入部分子集
bin/sqoop import \ --connect jdbc:mysql://hadoop1:3306/userdb \ --username sqoop \ --password sqoop \ --where "city ='sec-bad'" \ --target-dir /wherequery \ --table emp_add --m 1