Path 配置单元非法状态异常输入路径不明确

Path 配置单元非法状态异常输入路径不明确,path,hive,ambiguous,Path,Hive,Ambiguous,我正在配置单元中对具有分区的表运行查询 从活动中选择计数(*),其中日期戳=2016-08-16 但是,查询引发以下异常 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-0f617

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

从活动中选择计数(*),其中日期戳=2016-08-16

但是,查询引发以下异常

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)

我已经检查了路径是否有分区。我还使用了拼花工具jar打开了文件,看起来文件中的数据格式正确。任何关于路径模棱两可的线索

我们遇到了与您相同的问题,当时有一条insert语句,前面执行的动态分区可能会插入到现有分区中

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

我们手动清理分区元数据。 也就是说,我们执行了一个
altertable xxxx drop分区(tag>='yyyyyyyy')DDL以删除所有分区。(对于外部表,这不会调用任何HDFS操作。数据将保持完整。)

然后:

执行了msck修复表命令

在此修复之后,对该表的查询再次变得正常

因此我猜测,分区元数据可能表明有多个分区指向同一路径(因此提示路径不明确)

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