zoukankan      html  css  js  c++  java
  • 解决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,这样就不用每次都重写它的方法了。

  • 相关阅读:
    Nginx从安装到配置文件详解
    python流程控制语句
    python数据类型以及方法
    python介绍以及基础基础语法
    new 操作符
    js 模拟substr
    js 对于链式加载的思考
    js 实现哈夫曼树
    js实现深度优先
    js 广度优先遍历
  • 原文地址:https://www.cnblogs.com/zyanrong/p/11997734.html
Copyright © 2011-2022 走看看