☆☆☆★☆☆☆

唯有努力才能活成自己想要活成的样子

导航

解决2.5.0-mr1-cdh5.2.0-SNAPSHOT版本下oracle数据库插入数据报错

在使用mapreduce将计算数据插入oracle库中报错:

java.io.IOException: ORA-00911 ;

我引用的包是

org.apache.hadoop.mapreduce.lib.db;
org.apache.hadoop hadoop-core;

结果跟发现在源码里org.apache.hadoop.mapreduce.lib.db.DBOutputFormat.DBRecordWriter.close(TaskAttemptContext context)throws IOException ; 的第110行报错.throw new IOException(ex.getMessage());

在org.apache.hadoop.mapreduce.lib.db.DBOutputFormat类里发现了constructQuery ()发现oracle具体插入操作的实现中出现拼接  SQL字符串时对“,”’的判断。如下图:

 

   我们知道在JAVA程序中拼接的SQL末尾是不能 加分号的,这样会造成的SQL错误!

解决办法

将自己写的DBOutputFormat.ava   打JAR包,然后用压缩文件的格式打开找到DBOutputFormat.class并替换hadoop-core-1.1.1.jar中的DBOutputFormat.class,这样就不用每次都重写它的方法了。

 

 

posted on 2019-12-06 21:06  Yr-Zhang  阅读(231)  评论(0编辑  收藏  举报