sqoop之hive数据仓库和oracle数据库数据转换

1 sqoop简介

1.1 什么是sqoop?

sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、oracle)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。

image

1.2 使用sqoop将oracle数据导入到hdfs中

  1. 首先在oracle选取要导入的表emp
image

注意:

如果报oracle driver找不到,请讲ojdbc14.jar拷贝至下面的目录

/opt/cloudera/parcels/CDH-5.4.0-1.cdh5.4.0.p0.27/lib/sqoop/lib

  1. 将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. 查看导出的效果
image

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
image

1.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数据转换已经成功完成!

你可能感兴趣的:(sqoop之hive数据仓库和oracle数据库数据转换)