1 sqoop简介
1.1 什么是sqoop?
sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、oracle)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。
image1.2 使用sqoop将oracle数据导入到hdfs中
- 首先在oracle选取要导入的表emp
注意:
如果报oracle driver找不到,请讲ojdbc14.jar拷贝至下面的目录
/opt/cloudera/parcels/CDH-5.4.0-1.cdh5.4.0.p0.27/lib/sqoop/lib
- 将oracle中的emp表中的empno,ename,sal,deptno列导入到hdfs中的/tmp/chenjian/qy73emp目录下
sqoop import --connect jdbc:oracle:thin:@192.168.153.12:1521:orcl --username scott --password tiger --table emp --columns 'empno,ename,sal,deptno' -m 1 --target-dir '/tmp/chenjian/qy73emp'
参数解释
--connect连接的oracle数据地址
-m 是mapreduce的数量
- 查看导出的效果
1.3 使用sqoop将oracle数据导入到hive中
sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.153.12:1521:orcl --username scott --password tiger --table empbak -m 1 --columns 'EMPNO,ENAME,SAL' --hive-table qy73empxx
参数解释:
--table 指定oracle中的表名
--hive-table 指定hive中的表名
image错误:
image解决方法:
--columns 参数中的列名必须大写
导入成功
image image1.4 使用sqoop将hive数据导入到oracle中
sqoop export --table tbl_zhouan --connect jdbc:oracle:thin:@192.168.153.12:1521:orcl --username scott --password tiger --export-dir /user/hive/warehouse/qy73db.db/zhouan /zhouan.txt --columns eid,name,salary,destination --input-fields-terminated-by ' ' --input-lines-terminated-by ' '
参数说明:
--table 指定oracle中的表名
--export-dir 指定数据源的绝对路径,hdfs中
--columns hive中表的列名
--input-fields-terminated-by hive中表属性分隔符
--input-lines-terminated-by hive中行分隔符
错误:
image解决办法:
在oracle中创建表tbl_zhouan
image image查询oracle可以发现数据已经导出成功。
image至此,hive和oracle数据转换已经成功完成!
网友评论