gpt4 book ai didi

path - Hive IllegalStateException 输入路径不明确

转载 作者:行者123 更新时间:2023-12-01 16:02:23 25 4
gpt4 key购买 nike

我正在配置单元中对带有分区的表运行查询。

从 datestamp=2016-08-16 的事件中选择 count(*)

但是查询抛出以下异常

java.lang.IllegalStateException: Ambiguous input path hdfs://ip-172-29-1-53.us-west-2.compute.internal:8020/hive/dcm/activity/datestamp=2016-10-01/part-r-00000-41b9fc2f-101c-423a-901e-0f617c8fbd62.gz.parquet
at org.apache.hadoop.hive.ql.exec.MapOperator.getNominalPath(MapOperator.java:454)
at org.apache.hadoop.hive.ql.exec.MapOperator.cleanUpInputFileChangedOp(MapOperator.java:501)
at org.apache.hadoop.hive.ql.exec.Operator.cleanUpInputFileChanged(Operator.java:1072)
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:545)
at org.apache.hadoop.hive.ql.exec.tez.MapRecordSource.processRow(MapRecordSource.java:83)

Failure while running task:java.lang.RuntimeException: java.lang.RuntimeException: java.lang.IllegalStateException: Ambiguous input path hdfs://ip-172-29-1-53.us-west-2.compute.internal:8020/hive/dcm/activity/datestamp=2016-08-16/part-r-00000-1fd9aa5b-6e66-4bf9-b015-a940cbd6cc5a.gz.parquet
at org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor(TezProcessor.java:173)
at org.apache.hadoop.hive.ql.exec.tez.TezProcessor.run(TezProcessor.java:139)
at org.apache.tez.runtime.LogicalIOProcessorRuntimeTask.run(LogicalIOProcessorRuntimeTask.java:344)
at org.apache.tez.runtime.task.TezTaskRunner$TaskRunnerCallable$1.run(TezTaskRunner.java:181)
at org.apache.tez.runtime.task.TezTaskRunner$TaskRunnerCallable$1.run(TezTaskRunner.java:172)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1709)
at org.apache.tez.runtime.task.TezTaskRunner$TaskRunnerCallable.callInternal(TezTaskRunner.java:172)
at org.apache.tez.runtime.task.TezTaskRunner$TaskRunnerCallable.callInternal(TezTaskRunner.java:168)
at org.apache.tez.common.CallableWithNdc.call(CallableWithNdc.java:36)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

我已经检查过该路径实际上有分区。我还使用 parquet 工具 jar 打开该文件,并且看起来该文件确实具有正确格式的数据。任何关于路径不明确的线索

最佳答案

当先前执行的带有动态分区的插入语句可能会插入到现有分区时,我们遇到了与您相同的问题。

为了恢复服务并防止可能损坏的元数据(分区信息)可能导致的更严重的问题,随后应用了快速修复:

我们手动清理分区元数据。也就是说,我们执行了 alter table xxxx drop partition (tag >= 'yyyyyyyy'); DDL 来删除所有分区。 (对于外部表,这不会调用任何 HDFS 操作。数据将完好无损。)

然后:

执行了msck修复表命令。

此修复后,对该表的查询再次正常。

所以我的猜测是,分区元数据可能表明有多个分区指向同一路径(从而提示路径不明确)。

要执行 Hive 查询,执行引擎将首先获取元数据,然后再深入底层文件系统。

关于path - Hive IllegalStateException 输入路径不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41725389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com