文档章节

Hive使用过程各种坑

阿拉德大陆的魔法师
 阿拉德大陆的魔法师
发布于 2016/11/07 14:12
字数 257
阅读 205
收藏 1

1. 在使用INSERT OVERWRITE DIRECTORY语句的时候报出如下异常

Caused by: java.io.IOException: Cannot get DistCp constructor: org.apache.hadoop.tools.DistCp.<init>()
        at org.apache.hadoop.hive.shims.Hadoop23Shims.runDistCp(Hadoop23Shims.java:1160)
        at org.apache.hadoop.hive.common.FileUtils.copy(FileUtils.java:553)
        at org.apache.hadoop.hive.ql.metadata.Hive.moveFile(Hive.java:2622)
        ... 21 more

环境:hive-1.2.1 hadoop-2.7.2

错误原因:

hadoop-2.7.2源代码中org.apache.hadoop.tools.DistCp的无参构造方法已经取消public。

  /**
   * To be used with the ToolRunner. Not for public consumption.
   */
  @VisibleForTesting
  DistCp() {}

而hive-1.2.1中使用反射机制初始化org.apache.hadoop.tools.DistCp时,调用的正是无参构造方法。

@Override
  public boolean runDistCp(Path src, Path dst, Configuration conf) throws IOException {
    int rc;

    // Creates the command-line parameters for distcp
    String[] params = {"-update", "-skipcrccheck", src.toString(), dst.toString()};

    try {
      Class clazzDistCp = Class.forName("org.apache.hadoop.tools.DistCp");
      Constructor c = clazzDistCp.getConstructor();
      c.setAccessible(true);
      Tool distcp = (Tool)c.newInstance();
      distcp.setConf(conf);
      rc = distcp.run(params);
    } catch (ClassNotFoundException e) {
      throw new IOException("Cannot find DistCp class package: " + e.getMessage());
    } catch (NoSuchMethodException e) {
      throw new IOException("Cannot get DistCp constructor: " + e.getMessage());
    } catch (Exception e) {
      throw new IOException("Cannot execute DistCp process: " + e, e);
    }

    return (0 == rc);
  }

解决方案:使用老版本的hadoop-distcp-x.x.x.jar,我这里使用的是hadoop-distcp-2.6.2.jar。

  @VisibleForTesting
  public DistCp() {}

 

© 著作权归作者所有

阿拉德大陆的魔法师
粉丝 27
博文 91
码字总数 83019
作品 0
西城
程序员
私信 提问
Hadoop运维记录系列(十九)

Kerberos保护下的Hive排错记录,5月14日,Megadeth北京见。 同事想在zeppelin里面使用Hive,这是在新的kerberos保护下的集群里第一次使用Hive,不幸的是,使用过程中还是出现了验证授权的问题...

Slaytanic
2017/05/05
0
0
Spark on Yarn ”爬坑“集锦(spark1.2)

一、概述 Ha,已经有两个月没有更新blog了。由于近排公司需要引入Spark相关技术,我也是作为技术攻关人员之一,在这段时间使用Spark遇到了挺多问题,跌的坑也比较多,这篇blog主要总结一下这段...

zengzhaozheng
2014/12/30
0
0
Spark:DataFrame生成HFile 批量导入Hbase

批量加载-Bulk Load 在工作过程中有个需求,需要将DataFrame的数据保存进Hbase,并且在Spark集群并没有安装Hbase,此时对于常规的使用put将DataFrame加载进Hbase的方式不在适用,一方面是没有H...

利伊奥克儿
2018/10/14
0
0
Hive on Spark下无法处理Parquet表

我在使用Hive on Spark时,在搭建过程中不段踩坑,网上资料也有,但都是千篇一律,点到为止,欲言又止,明明在说却又故意不说清楚的那种,看着让人很蛋疼. 过程是这样的,我在Spark的官网查到,要使用...

咸鱼也有梦想
2017/01/09
363
0
hue(05)、Hue集成mysql、oracle等数据库

在 hue(04)、Hue集成Hive数据仓库 中我们在hue中集成hive数据仓库,替代了hive自己的hwi服务,可以很方便的在hue中进行hive的sql查询等操作。本文我们将在hue中集成mysql、oracle等数据库,这...

MaxBill
2018/02/27
843
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 人生,还真是到处是意外

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享lil peep的单曲《High School》 《High School》- lil peep 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
57分钟前
42
3
Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
9
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
10
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部