使用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上也很好用。
FWIU,这意味着您有一个表在Hive元存储区中用bucketing声明,但没有正确地进行bucketing。特别是,带条带的表不应包含目录。与配置单元不同,Presto总是利用分段属性,因此不正确的分段配置单元表将使查询失败。
据我所知,唯一的解决方法是使用配置单元从表元数据中删除分块标记,或者使用配置单元重写表以使其正确分块。