文档章节

SQOOP2 连接 Oracle 数据库为什么会报错?

pearma
 pearma
发布于 2017/02/05 13:55
字数 542
阅读 70
收藏 0

最近在研究如何使用sqoop2来做数据etl。sqoop2采用了mapreduce机制,可以让多个节点同时抽取数据,这样可以提高效率。理念不错,但是这个软件由于是开源产品,做得并不是很完善,我在使用它连接oracle数据库的时候,就掉坑里了。

按照教程,使用sqoop2-shell命令行工具,对etl过程进行配置,其中涉及到oracle的连接串配置。我从网上找了一个oracle jdbc 连接例子试了一下,能够连通,就用例子里的jdbc url来配置sqoop2了。这个url长得如下:

jdbc:Oracle:thin://@localhost:1521:orcl

结果就悲剧了,在监控里提示job被分配到一个节点后,节点连接oracle数据库失败,提示jdbcurl=null。

由于不理解问题原因,我研究了5、6天,才最终决定要从研究为啥jdbcurl变成空了入手。

翻了好多代码,终于知道sqoop2会根据用户设置的jdbc url,重写一遍,用于提供给每个mapper class.如果你用户提供的url不能正确解析,那么传给mapper的就是空。 这个重写的工作,就在 OracleJdbcCommonInitializer.setMapperConnectionDetails里。非常讽刺的是,这个类会先拿用户提供的url连一次数据库,连通了,然后才重写jdbc url。如果这个时候,解析用户的url失败,就会报错。但是,这样的做法不是脱裤子放屁么?你解析不了,完全可以原样传给mapper呀。

看了一下解析jdbc url的函数,发现我的url的确写得有问题,斜杠的位置放错了,应该放在@后面,或者直接删除。而且事后去网上找url例子,发现我这么写的居然找不到了。运气好,还是不好呢?

改好url,节点就不再提示连接数据库的问题了,接下来是类型不匹配的问题。这个还需要继续研究。

org.apache.sqoop.connector.jdbc.oracle.util.OracleDataChunkExtent cannot be cast to org.apache.sqoop.connector.jdbc.oracle.util.OracleDataChunk 

© 著作权归作者所有

上一篇: 机器学习相关
下一篇: sqoop2 源代码解析
pearma
粉丝 3
博文 67
码字总数 26042
作品 0
徐汇
高级程序员
私信 提问
加载中

评论(1)

smallhuman
smallhuman
最后这个类型转换的问题不知道博主怎么解决的。。碰到同样的问题了
sqoop的安装与使用,sqoop安装使用

sqoop的安装与使用,sqoop安装使用 1.什么是Sqoop Sqoop即 SQL to Hadoop ,是一款方便的在传统型数据库与Hadoop之间进行数据迁移的工具,充分利用MapReduce并行特点以批处理的方式加快数据传...

Zero零_度
2016/06/06
722
0
Sqoop1和Sqoop2简介

主要来源: http://www.linuxidc.com/Linux/2014-10/108337.htm 1.什么是Sqoop Sqoop即 SQL to Hadoop ,是一款方便的在传统型数据库与Hadoop之间进行数据迁移的工具,充分利用MapReduce并行特...

强子大叔的码田
2015/12/23
1K
0
Sqoop2 vs Sqoop

以下文字内容部分译自Sqoop2 vs Sqoop: Sqoop1是一个客户端程序,用户只需在客户端添加驱动或者连接器到Sqoop中即可使用, Sqoop2是一个基于服务的模型,新一代Sqoop,所有配置以及驱动都必...

cwalet
2015/11/23
1K
0
Apache Sqoop 1.99.4 发布,Hadoop 数据迁移

Apache Sqoop 1.99.4 发布,这是 Sqoop2 的第四个里程碑版本,是非常重要的一个里程碑。 Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : ...

oschina
2014/11/27
2.3K
0
Apache Sqoop 1.99.2 发布,Hadoop 数据迁移

Apache Sqoop 团队很高兴的宣布 Sqoop 1.99.2 发布,这是 Sqoop 2 的一个重要里程碑,详细改进请看发行说明。 其中新特性包括: [SQOOP-643] - Sqoop2: Implement simple listings for conn...

红薯
2013/04/26
2K
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 年迈渔夫遭黑帮袭抢

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享Elvis Presley的单曲《White Christmas》: 《White Christmas》- Elvis Presley 手机党少年们想听歌,请使劲...

小小编辑
今天
1K
20
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
16
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部