在presto中对hive bucketed表运行查询时出现异常

时间:2016-04-14 07:42:40

标签: presto

使用presto在流式配置单元表上运行查询时获取此异常。

HIVE_PARTITION_SCHEMA_MISMATCH(16777224)

com.facebook.presto.spi.PrestoException: Found sub-directory in bucket directory
at com.facebook.presto.hive.BackgroundHiveSplitLoader.listAndSortBucketFiles(BackgroundHiveSplitLoader.java:367)
at com.facebook.presto.hive.BackgroundHiveSplitLoader.loadPartition(BackgroundHiveSplitLoader.java:333)
at com.facebook.presto.hive.BackgroundHiveSplitLoader.loadSplits(BackgroundHiveSplitLoader.java:212)
at com.facebook.presto.hive.BackgroundHiveSplitLoader.access$300(BackgroundHiveSplitLoader.java:67)
at com.facebook.presto.hive.BackgroundHiveSplitLoader$HiveSplitLoaderTask.process(BackgroundHiveSplitLoader.java:168)
at com.facebook.presto.hive.util.ResumableTasks.safeProcessTask(ResumableTasks.java:45)
at com.facebook.presto.hive.util.ResumableTasks.lambda$submit$66(ResumableTasks.java:33)
at io.airlift.concurrent.BoundedExecutor.executeOrMerge(BoundedExecutor.java:69)
at io.airlift.concurrent.BoundedExecutor.access$000(BoundedExecutor.java:28)
at io.airlift.concurrent.BoundedExecutor$1.run(BoundedExecutor.java:40)
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)

PS:表包含数据并使用hql返回结果。其他表在presto上工作正常。

1 个答案:

答案 0 :(得分:1)

FWIU,这意味着您有一个在Hive Metastore中使用bucketing声明但没有正确分区的表。具体来说,分块表不应包含目录。与Hive不同,Presto总是利用了分段属性,因此错误分配的Hive表将无法通过查询。

我知道的唯一解决方法是使用Hive从表元数据中删除bucketing标记,或者使用Hive重写表以正确地删除。