专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

sqoop之30分钟搞定hive数据仓库和oracle数据库数据转换

ins518 2024-10-16 12:24:28 技术文章 15 ℃ 0 评论

1 sqoop简介

1.1 什么是sqoop?

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

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

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

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

注意:

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

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

2) 将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的数量

3) 查看导出的效果

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中的表名

错误:

解决方法:

--columns 参数中的列名必须大写

导入成功

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 '\n'

参数说明:

--table 指定oracle中的表名

--export-dir 指定数据源的绝对路径,hdfs中

--columns hive中表的列名

--input-fields-terminated-by hive中表属性分隔符

--input-lines-terminated-by hive中行分隔符

错误:

解决办法:

在oracle中创建表tbl_zhouan

查询oracle可以发现数据已经导出成功。

至此,hive和oracle数据转换已经成功完成,休息一下!

关山难越,谁悲失路之人?萍水相逢,尽是他乡之客。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表