原因
写hive sql的时候,用null给复杂类型的列赋值了。null不能转成对应的复杂类型而导致的报错。比如我这次要做的是c、b表有复杂类型这一列。a表没有。要把a表数据导入c,用的insert into table c select a.*,null from a
.就会报错。null这个值,在读取数据的时候,没有值会返回null,用来做“占位”的,但是赋值的时候不能简单用null赋值。文章来源地址https://www.toymoban.com/news/detail-514686.html
解决方法
- 用udf,自己开发或用第三方的看需要。
- 用另外的列数据赋值。比如我这次要做的是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>这种内部字段类型也定义了的 | 不行 |
文章来源:https://www.toymoban.com/news/detail-514686.html
到了这里,关于[Exceptions]hive Cannot convert column xx from void to array<int>.的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!