2016-04-14 11 views
1

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使用して結果。そして、他のテーブルはプレストでうまく動作します。

+0

これは悪いエラーコードです:https://github.com/prestodb/presto/issues/5036 –

+0

実際には、私は問題、トランザクションテーブルを持っています。として、私はトランザクションテーブルを必要とするストリームデータで自分のテーブルをロードしています。そしてprestoはまだトランザクションテーブルをサポートしていません。 –

答えて

1

FWIUこれは、Hiveメタストアでバケツティングを使用して宣言されていても、正しくバケット化されていないテーブルがあることを意味します。具体的には、バケット表にはディレクトリを含めないでください。 Hiveとは異なり、Prestoはバケットプロパティを常に利用するので、誤ってバケツにされたHiveテーブルはクエリに失敗します。

私が知っている唯一の回避策は、Hiveを使用してテーブルメタデータからバケツングフラグを削除するか、Hiveを使用してテーブルを正しくバケットに書き換えることです。

関連する問題