Hive复杂数据类型(array类型、map类型、struct类型)

目录

​一、array类型

        1.查询array内包含的指定词信息

        2.查询array中元素的个数

        3.查询array内指定序号信息

二、map类型

        1.查询指定value

        2.取出map全部key

        3.取出map全部value

        4.size查看map元素个数

        5.查看指定数据是否在map内

三、struct类型

        1.查询info信息


一、array类型

        建表语句:

        create table 表名(要素1 类型,要素2 类型,要素3 array<类型>)  row format delimited fileds  terminated by '\t' collection items terminated by ',';

        1.查询array内包含的指定词信息

        select * from table_name where ARRAY_CINTAINS(属性,'指定词');

        2.查询array中元素的个数

        select size(array_name) locations from table_name;

        3.查询array内指定序号信息

        select 数组[序号] from table_name;        

二、map类型

        map数据类型就是:Key-value型数据类型,例如以下数据的members列就是key-value

        建表语句:

        create table table_name(要素1 类型,要素2 类型,要素3 map<类型,类型>) row format delimited fields terminated by ' , ' collection items terminated by ' # ' map keys terminated by ' : ';

        1.查询指定value

        select 要素[value] from table_name;

        2.取出map全部key

        select map_keys(map要素) from table_name;

        3.取出map全部value

        select map_values(map要素) from table_name;

        4.size查看map元素个数

        select size(map要素) from table_name;

        5.查看指定数据是否在map内

        select * from table_name where array_contains(map_keys[或values](map要素),'指定数据');

三、struct类型

        struct类型是复合类型,可以在一个列中存入多个子列,每个子列允许设置类型和名称,有如下数据文件,说明:字段之间#分隔,struct之间冒号分隔

        建表语句:

        create table table_name(要素1,info struct<子列1:类型,子列2:类型>) row format delimited fields terminated by ' # ' collection items terminated by ' : ';

        1.查询info信息

        select info.子列名 from table_name;