/ / ClassCastException podczas używania formatu pliku ORC z Hive, gdy vectorized.execution.enabled - hadoop, mapreduce, hive

Wyjątek ClassCastException podczas używania formatu pliku ORC z Hive, gdy vectorized.execution.enabled - hadoop, mapreduce, hive

Mam tabelę gałęzi z następującymi właściwościami -

  • Format przechowywania ORC
  • transakcyjny = true
  • Partycjonowany na 4 klucze - rok, miesiąc, dzień, godzina
  • zebrane przez groupingKey

Używam Hive Streaming do zapełniania danych bezpośrednio do tabeli.

Teraz mój problem jest - Próbuję uruchomić następujące zapytanie

select count(*) from table_name;

Dostaję następujący wyjątek

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)

Jednak jeśli wyłączę wektorową realizację, ustawiając następującą właściwość

set hive.vectorized.execution.enabled = false;

wszystko działa dobrze (chociaż ukończenie trwa kilka wieków).

Dlaczego to się dzieje ? Z tego, co rozumiem, w formacie ORC, powinno działać wektoryzowane wykonanie.

Wersja Hadoop - 2.7.1

Wersja Hive - 1.2.1

Odpowiedzi:

1 dla odpowiedzi № 1

Wygląda na to, że ten problem z ulem został zamknięty / naprawiony. sprawdź ponownie używaną wersję ula.

Proszę sprawdzić Vectorized wykonanie powoduje ClassCastException

wprowadź opis obrazu tutaj