2016-04-14 12 views
1

Erhalten Sie diese Ausnahme beim Ausführen der Abfrage in der Streaming-Hive-Tabelle mit presto.Ausnahmebedingung während der Ausführung der Abfrage in der Hive-Bucket-Tabelle in 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: Tabelle enthält Daten und kehrt Ergebnis mit HQL. Und andere Tische funktionieren presto gut.

+0

Dies ist ein schlechter Fehlercode: https://github.com/prestodb/presto/issues/5036 –

+0

Eigentlich habe ich das Problem, Transaktionstabelle. Ich lade meine Tabelle mit Stream-Daten, für die eine Transaktionstabelle erforderlich ist. Und presto hat transaktionstabelle noch nicht unterstützt. –

Antwort

1

FWIU, das bedeutet, dass Sie eine Tabelle haben, die mit Bucketing im Hive-Metastream deklariert ist, aber nicht ordnungsgemäß im Bucket ist. Insbesondere sollten Bucketed-Tabellen keine Verzeichnisse enthalten. Im Gegensatz zu Hive nutzt Presto immer die Vorteile von Bucketing-Eigenschaften, sodass eine falsch gestückelte Hive-Tabelle die Abfrage nicht besteht.

Die einzigen Arbeitsumgebungen, die ich kenne, sind, entweder das Bucketing-Flag aus den Tabellenmetadaten mithilfe von Hive zu entfernen oder die Tabelle neu zu schreiben, die Hive verwendet, um korrekt zu bunkern.