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,这样就不用每次都重写它的方法了。

  • 相关阅读:
    a 超链接标签
    select(下拉标签和textarea(文本框)
    input标签
    input 标签
    div 标签
    body 标签
    STL__网上资料
    STL_iterator返回值
    STL_算法_中使用的函数对象
    STL_std::iterator
  • 原文地址:https://www.cnblogs.com/zyanrong/p/11997734.html
Copyright © 2011-2022 走看看