美文网首页
hive insert overwrite hdfs(hive输

hive insert overwrite hdfs(hive输

作者: kris37 | 来源:发表于2017-04-21 15:03 被阅读0次

    近日将原来MR 处理到etl 部分转移到Hive Serde 处理导出到HDFS的时候,Hive导出过程出错caused by: java.io.IOException: Cannot get DistCp constructor: org.apache.hadoop.tools.DistCp.<init>()

    • hadoop 2.7.2 hive 1.2.1
    • 报错的问题是无法初始化 DistCp class 看了下这部分的代码 Hadoop
      src-pic
      而Hive
      中实现接口HadoopShims 中runDistCp的方法时采用的是反射
      Class clazzDistCp = Class.forName("org.apache.hadoop.tools.DistCp");Constructor c = clazzDistCp.getConstructor();
      无参构造,而hadoop2.7.2中DistCp类的无参构造方法是 default 不是public,反射无法获取。
    • 解决办法 可以找一个hadoop 2.6X的包hadoop-distcp-2.6.5.jar 放到hive/lib 目录下。或者修改 hadoop 对应到包 修改其无参构造方法声明为public,替换掉hadoop目录下到jar包

    相关文章

      网友评论

          本文标题:hive insert overwrite hdfs(hive输

          本文链接:https://www.haomeiwen.com/subject/dxedzttx.html