即使您正在创建具有特定数据类型的配置单元表,插入时表中的基础数据也将以字符串格式存储。
因此,当spark尝试读取数据时,它将使用metastore查找数据类型。它在配置单元元存储中以int形式出现,在文件中以字符串形式出现,并引发强制转换异常。
解决方案
将表创建为字符串,并从spark读取数据即可。
create table test1 (id String, desc String);
如果要保留数据类型,请指定创建表的文件格式(例如orc或parquet)之一,然后将其插入。您可以无例外地从Spark读取文件
create table test1 (id int, desc varchar(40) STORED AS ORC);
现在的问题是为什么蜂巢能够阅读它? 蜂巢具有良好的演员选择,而火花却没有。



