Spark не может прочитать таблицу Hive OR C с файлами данных с другой версией схемы - PullRequest
2 голосов
/ 20 января 2020

У меня есть разделенная таблица куста ИЛИ C, созданная как показано ниже.

create table default.tab_xyz (
wid String,
update_at timestamp,
type String,
id long)
 PARTITIONED BY (                                                                      
   minorversion string)                           
 ROW FORMAT SERDE                                   
   'org.apache.hadoop.hive.ql.io.orc.OrcSerde'      
 STORED AS INPUTFORMAT                              
   'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'  
 OUTPUTFORMAT                                       
   'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'

Теперь под разделом есть две версии 2.1 и 2.2. Когда я взял схему из файлов версий, она выглядит следующим образом.

* 2.1 Схема версий *

wid : String,
type: String,
update_at : timestamp

* 2.2 Схема версий *

wid : String,
update_at : timestamp,
type: String,
id : long

Когда я выполняю select * from default.tab_xyz в улье, все работает нормально.

Но когда я делаю spark.sql("select * from default.tab_xyz"), он выдает меня ниже ошибки java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.orc.mapred.OrcTimestamp, потому что для файла версии 2.1 он сопоставляет столбец type со столбцом update_at в таблице.

в любом случае есть дескриптор Это искра, чтобы получить все данные, даже если схемы разные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...