【问题标题】:Exception while running query on hive bucketed table in presto在 presto 中对 hive 分桶表运行查询时出现异常
【发布时间】:2016-04-15 00:15:20
【问题描述】:

使用 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 上也能正常工作。

【问题讨论】:

  • 这是一个错误的错误代码:github.com/prestodb/presto/issues/5036
  • 实际上,我遇到了问题,事务表。因为,我正在用需要事务表的流数据加载我的表。而且 presto 还不支持事务表。

标签: presto


【解决方案1】:

FWIU,这意味着您有一个在 Hive 元存储中声明了分桶但未正确分桶的表。具体来说,分桶表不应包含目录。与 Hive 不同的是,Presto 总是利用分桶属性,因此不正确分桶的 Hive 表将导致查询失败。

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

【讨论】:

    猜你喜欢
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    相关资源
    最近更新 更多