hadoop - Hive:每当它触发 map reduce 时,它​​都会给我这个错误 "Can not create a Path from an empty string",我该如何调试?

标签 hadoop hive

我正在使用 hive 0.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

最佳答案

我已经解决了这个问题。

我查找了日志文件,在我的例子中,该表是一个外部表,指的是位于 hdfs 上的一个目录。该目录包含超过 300000 个文件。因此,在读取文件时,它抛出了内存不足异常,可能是因为这个原因,它得到了一个空字符串并抛出了“无法从空字符串创建路径”异常。

我尝试使用较小的文件子集,但它奏效了。

最重要的是,此异常的一个可能原因是内存不足。

关于hadoop - Hive:每当它触发 map reduce 时,它​​都会给我这个错误 "Can not create a Path from an empty string",我该如何调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24564357/

相关文章:

hadoop - 选择查询错误在 hive

java - 向我的 Storm 集群提交字数统计拓扑,使用 Eclipse 创建 jar,但它显示异常

hadoop - 将分区添加到没有数据的配置单元表

python - Hadoop 和 NLTK : Fails with stopwords

hadoop - 从 Apache Spark 查询外部配置单元中存在的表

jdbc - 通过 JDBC 访问非托管(外部)Azure Databricks Hive 表

linux - 在hadoop中启动守护进程时出错

hadoop - Oozie不清除Oozie数据库中的旧作业

hadoop - Sqoop 导入已成功完成。如何在 Hive 中查看这些表

hadoop - Not In Where 条件在 SAS Hive Hadoop 中删除空白