У меня есть разделенная таблица куста ИЛИ 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
в таблице.
в любом случае есть дескриптор Это искра, чтобы получить все данные, даже если схемы разные.