Ich habe einen Bienentisch mit folgenden Eigenschaften -
- ORC Speicherformat
- transaktional = wahr
- Auf 4 Tasten aufgeteilt - Jahr, Monat, Tag, Stunde
- bucket von Gruppierungsschlüssel
Ich verwende Hive Streaming, um Daten direkt in Tabellen zu füllen.
Jetzt ist mein Problem - ich versuche, folgende Abfrage auszuführen
select count(*) from table_name;
Ich bekomme folgende Ausnahme
Caused by: java.lang.ClassCastException: org.apache.hadoop.hive.ql.io.orc.OrcStruct$OrcStructInspector cannot be cast to org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector
at org.apache.hadoop.hive.ql.exec.vector.VectorizedBatchUtil.setVector(VectorizedBatchUtil.java:295)
at org.apache.hadoop.hive.ql.exec.vector.VectorizedBatchUtil.acidAddRowToBatch(VectorizedBatchUtil.java:275)
at org.apache.hadoop.hive.ql.io.orc.VectorizedOrcAcidRowReader.next(VectorizedOrcAcidRowReader.java:82)
Wenn ich jedoch die vektorisierte Ausführung abstelle, indem ich die folgende Eigenschaft festlege
set hive.vectorized.execution.enabled = false;
Alles funktioniert gut (obwohl es ewig dauert, um es zu vervollständigen).
Warum passiert dies ? Soweit ich das verstehe, sollte die vektorisierte Ausführung mit ORC-Format funktionieren.
Hadoop-Version - 2.7.1
Hive Version - 1.2.1
Antworten:
1 für die Antwort № 1Scheint so, als ob dieses Hive-Problem geschlossen / behoben wurde. Bitte überprüfen Sie Ihre Version des verwendeten Bienenstocks.
Bitte prüfe Die vektorisierte Ausführung führt zu ClassCastException