新闻资讯
行业资讯
HIVE中关于collect_set与explode函数妙用
2017-05-03 10:17:14
摘要:Hive中的列支持使用三类复杂的集合数据类型,即:array,map及struct,这些类型的名称是保留字,具体用法可参见该篇博文,里面有关于三类基本集合数据类型的操作实例,注:map中可嵌套array类型。

HIVE中关于collect_set与explode函数妙用

  hive的复合数据类型

  Hive中的列支持使用三类复杂的集合数据类型,即:array,map及struct,这些类型的名称是保留字,具体用法可参见该篇博文,里面有关于三类基本集合数据类型的操作实例,注:map中可嵌套array类型。   例如,定义表:   1、create table example (   2、device_id string,   3、login_ip array,   4、user_info map>   5、address struct   6、)   7、row format delimited   8、fields terminated by '\001'   9、collection items terminated by '\002'   10、map keys terminated by '\003'   11、lines terminated by '\n'   12、stored as RCFile;   假设这样的数据类型以分区表存储,你要统计一段时间类no=1下的去重score,那么该怎么办了?这里可配合使用lateral view首先实现列转行的功能,如下所示:   select no,score from tablaa lateral view explode(score_set) xxx as score;   注:xxx代表虚表名称,不能缺少。   进一步深化上述代码解决统计一段时间的去重值,可写为:   select no,collect_set(score) from tablaa lateral view explode(score_set) xxx as score group by no;   这样,将两个函数结合实现了行转列或列转行的妙用。
USA-IDC为您提供免备案服务器 0元试用
立即联系在线客服,即可申请免费产品试用服务
立即申请