蜂巢:每当它触发地图时,它都会给我这个错误“无法从空字符串创建路径”,我该如何调试?

Sam*_*thy 3 hadoop hive

我正在使用配置单元0.10,当我这样做时

hive -e "show tables", hive -e "desc table_name" it works!
Run Code Online (Sandbox Code Playgroud)

但是当我做类似的事情时,我hive -e "select count(*) table_name在下面得到了例外。有办法调试吗?相同的代码在以前的集群中与较旧版本的hive一起使用时,新集群抛出此错误。什么应该是调试此类问题的正确方法,而Google并未找到解决该问题的方法。

    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)
Run Code Online (Sandbox Code Playgroud)

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

Sam*_*thy 5

我已经解决了问题。

我查找了日志文件,在我的情况下,该表是一个外部表,它引用位于hdfs上的目录。此目录包含300000多个文件。因此,在读取文件时,它抛出了内存不足异常,并且可能是由于这个原因,它获取了一个空字符串并抛出了“无法从一个空字符串创建路径”异常。

我尝试使用较小的文件子集,但确实有效。

底线,此异常的一个可能原因是内存不足。