hive:每当它触发一个map reduce时,它都会给我这个错误“不能从空字符串创建路径”,我该如何调试?

xtupzzrd  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(297)

我正在使用Hive0.10,当我这样做

hive -e "show tables", hive -e "desc table_name" it works!

但是当我做类似的事情 hive -e "select count(*) table_name 我得到下面的例外。有什么方法可以调试这个吗?使用旧版本的配置单元在上一个集群中使用相同的代码,而新集群将抛出此错误。什么应该是正确的方式来调试这类问题,没有从谷歌找到任何可以解决问题的方法。

java.lang.IllegalArgumentException: Can not create a Path from an empty string
    at org.apache.hadoop.fs.Path.checkPathArg(Path.java:91)
    at org.apache.hadoop.fs.Path.<init>(Path.java:99)
    at org.apache.hadoop.hive.ql.exec.Utilities.getHiveJobID(Utilities.java:382)
    at org.apache.hadoop.hive.ql.exec.Utilities.clearMapRedWork(Utilities.java:195)
    at org.apache.hadoop.hive.ql.exec.ExecDriver.execute(ExecDriver.java:472)
    at org.apache.hadoop.hive.ql.exec.MapRedTask.execute(MapRedTask.java:138)
    at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:138)
    at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:57)
    at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1352)
    at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1138)
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:951)
    at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:259)
    at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:216)
    at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:412)
    at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:347)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:706)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:613)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:208)

失败:执行错误,从org.apache.hadoop.hive.ql.exec.mapredtask返回代码1

ubby3x7f

ubby3x7f1#

我已经解决了这个问题。
我查找了日志文件,在我的例子中,这个表是一个外部表,引用了位于hdfs上的目录。此目录包含超过300000个文件。因此,在读取文件时,它抛出了一个内存不足的异常,可能是因为这个原因,它得到了一个空字符串,并抛出了“不能从空字符串创建路径”异常。
我尝试了一个较小的文件子集,它的工作。
总之,导致此异常的一个可能原因是内存不足。

nmpmafwu

nmpmafwu2#

在我的案例中,有一个配置单元属性

设置hive.input.format=org.apache.hadoop.hive.ql.io.hiveinputformat;在引发异常的.hiverc文件中。

此任务的诊断消息:错误:java.lang.illegalargumentexception:无法从org.apache.hadoop.fs.path.checkpatharg(path)中的空字符串创建路径。java:131)在org.apache.hadoop.fs.path。java:139)位于org.apache.hadoop.hive.ql.io.hiveinputformat$hiveinputsplit.getpath(hiveinputformat)。java:110)在org.apache.hadoop.mapred.maptask.updateJobWithPlit(maptask。java:463)在org.apache.hadoop.mapred.maptask.runoldmapper(maptask。java:411)在org.apache.hadoop.mapred.maptask.run(maptask。java:347)在org.apache.hadoop.mapred.yarnchild$2.run(yarnchild。java:168)位于java.security.accesscontroller.doprivileged(本机方法)javax.security.auth.subject.doas(主题。java:415)在org.apache.hadoop.security.usergroupinformation.doas(usergroupinformation。java:1566)在org.apache.hadoop.mapred.yarnchild.main(yarnchild。java:163)
将其更改为以下内容后,它可以工作:set hive.input.format=org.apache.hadoop.hive.ql.io.combinehiveinputformat;

7z5jn7bk

7z5jn7bk3#

我也遇到了同样的错误。我的 hive.log 文件显示了原因-请参阅下面代码段的第一行,其中一个jar文件uri包含 file:// 没有任何路径:

2018-05-03 04:37:43,706 INFO  [main]: mr.ExecDriver (ExecDriver.java:execute(309)) - adding libjars: file://,file:///opt/cloudera/parcels/CDH/lib/hive/lib/hive-contrib.jar
2018-05-03 04:38:07,568 WARN  [main]: mapreduce.JobResourceUploader (JobResourceUploader.java:uploadFiles(64)) - Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this.
2018-05-03 04:38:07,599 ERROR [main]: exec.Task (SessionState.java:printError(937)) - Job Submission failed with exception 'java.lang.IllegalArgumentException(Can not create a Path from an empty string)'

在我的例子中,问题是由配置不正确的 $HIVE_HOME/conf/hive-env.sh 文件,在哪里 HIVE_AUX_JARS_PATH 包含对未设置的环境变量的引用。
例如:

export HIVE_AUX_JARS_PATH=$EMPTY_ENV_VARIABLE,/opt/cloudera/parcels/CDH/lib/hive/lib/hive-contrib.jar

相关问题