废话
hive在高级使用语法时,会遇到map/struct/array等操作。但是我们只需想测试某几种数据,不想搞得麻烦通过定义数据文件,然后创建数据结构,再导入这一系列流程,就为验证一个感觉很简单的问题。于是想简化这个步骤,直接创建一个不用定义数据row format的表,然后insert 数据,查看是否有效就行。这里特意为这这个实现写下此文方便查看。
干货-map示例
--创建person1表
CREATE TABLE person1(id INT,info map<string,string>);
INSERT into person1 select 3,map('name','zhangsan','age',16)
INSERT into person1 select 1,map('lisi','21') #错误示例select * from person1
#显示
id info
3 {"name":"zhangsan","age":"16"}
1 {"lisi":"21"} #错误示例
干货-struct示例
--创建person2表
CREATE TABLE person2(id INT,info struct<name:string,age:int>);
INSERT into person2 select 3,named_struct('name','wangwu','age',36);
select id,info.name,info.age from person2
#显示
id name age
3 wangwu 36
干货-array示例
--创建person3表
CREATE TABLE person3(id INT,alias array<string>);
INSERT into person3 select 4,ARRAY('zhangsan','zhangerwa','zhanggouzi')
select * FROM person3
#显示
id alias
4 {"zhangsan","zhangerwa","zhanggouzi"}zhangsanzhangerwazhanggouzi
总结
这三个都不一致,用起来还要注意区分