原因

写hive sql的时候,用null给复杂类型的列赋值了。null不能转成对应的复杂类型而导致的报错。比如我这次要做的是c、b表有复杂类型这一列。a表没有。要把a表数据导入c,用的insert into table c select a.*,null from a.就会报错。null这个值,在读取数据的时候,没有值会返回null,用来做“占位”的,但是赋值的时候不能简单用null赋值。

解决方法

  1. 用udf,自己开发或用第三方的看需要。
  2. 用另外的列数据赋值。比如我这次要做的是c、b表有这一列。a表没有。就insert into table c select a.*,b.column from a join b on a.id = b.id.

null转换的记录

数据类型 是否可以用null赋值
bigint、int 等 可以
string 没试(哈哈哈哈
array以及array(string)这种元素类型也定义了的 不行,有的可以用array()或array(‘’)来赋值
map以及map<string,string>这种元素类型也定义了的 不行
struct以及struct<a:string>这种内部字段类型也定义了的 不行
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐