一、什么是Sqoop
Sqoop是一个MapReduce的程序
Sqoop是一个数据交换工具(RDBMS):import、export
就是一个采集关系型数据库的工具。
二、安装
1、解压
tar -zxvf sqoop-1.4.5.bin__hadoop-0.23.tar.gz -C /usr/local/
2、将名字变短一些
mv sqoop-1.4.5.bin__hadoop-0.23/ sqoop
3、配置环境变量
SQOOP_HOME=/usr/local/sqoop
export SQOOP_HOME
PATH=$SQOOP_HOME/bin:$PATH
export PATH
4、把Oracle的JDBC的jar放到$SQOOP_HOME/lib目录
这样Sqoop就可以连接Oracle数据库。
三、Sqoop的使用
注意:Oracle:用户名、表名一定要大写
使用员工表:scott/scott
1、codegen
根据表结构生成对应的Java文件
sqoop codegen --connect jdbc:oracle:thin:@192.168.92.135:1521:orcl \
--username SCOTT --password scott --table EMP --outdir /tmp
2、create-hive-table
根据数据库的表结构创建Hive的表结构,不导入数据
sqoop create-hive-table --connect jdbc:oracle:thin:@192.168.92.135:1521:orcl \
--username SCOTT --password scott --table EMP --hive-table emphive
3、eval
在Sqoop中执行SQL
sqoop eval --connect jdbc:oracle:thin:@192.168.92.135:1521:orcl --username SCOTT --password scott --query "select * from emp where deptno=10"
4、export
导出,事先建表
sqoop export --connect jdbc:oracle:thin:@192.168.157.135:1521:orcl --username SCOTT --password tiger --table STUDENTS --export-dir /students
5、import
5.1、导入某张表
sqoop import --connect jdbc:oracle:thin:@192.168.92.135:1521:orcl --username SCOTT --password scott --table EMP --target-dir /sqoopemp
5.2、 导入HBase(事先在HBase中建表)
sqoop import --connect jdbc:oracle:thin:@192.168.92.135:1521:orcl --username SCOTT --password scott --table EMP --columns empno,ename,sal,deptno --hbase-table emp --hbase-row-key empno --column-family empinfo
5.3、增量导入
Incremental import arguments:
--check-column <column> Source column to check for incremental
change
--incremental <import-type> Define an incremental import of type
'append' or 'lastmodified'
--last-value <value> 上次导入的最大值。
例如:
sqoop import --connect jdbc:oracle:thin:@192.168.92.135:1521:orcl --username SCOTT --password scott --table EMP --fields-terminated-by "," --target-dir /sqoopemp --check-column empno --incremental append --last-value 7394
–fields-terminated-by “\t” 是设置每列之间的分隔符,"\0001"是ASCII码中的1,它也是hive的默认行内分隔符, 而sqoop的默认行内分隔符为","
6、import-all-tables
导入某个用户下的所有表
sqoop import-all-tables --connect jdbc:oracle:thin:@192.168.157.135:1521:orcl --username SCOTT --password tiger -m 1
7、 list-databases (管理员)
操作Oracle:列出的是数据库中所有的用户名(SYS、SYSTEM)
操作MySQL:列出的是所有数据库的名字
sqoop list-databases --connect jdbc:oracle:thin:@192.168.157.135:1521:orcl --username SYSTEM --password password
8、list-tables
列出该用户下的表
sqoop list-tables --connect jdbc:oracle:thin:@192.168.157.135:1521:orcl --username SCOTT --password tiger
测试
导入Oracle中sh用户92万条数据