HIVE中关于collect_set与explode函数妙用

大数据
Hive中的列支持使用三类复杂的集合数据类型,即:array,map及struct。

[[190170]]

hive的复合数据类型

Hive中的列支持使用三类复杂的集合数据类型,即:array,map及struct,这些类型的名称是保留字,具体用法可参见该篇博文,里面有关于三类基本集合数据类型的操作实例,注:map中可嵌套array类型。

例如,定义表:

  1. create table example ( 
  2.     device_id string, 
  3.     login_ip array<string>, 
  4.     user_info map<string,array<string>> 
  5.     address struct<street:string,city:string,state:string> 
  6. row format delimited 
  7. fields terminated by '\001' 
  8. collection items terminated by '\002' 
  9. map keys terminated by '\003' 
  10. lines terminated by '\n' 
  11. 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;

这样,将两个函数结合实现了行转列或列转行的妙用。

责任编辑:武晓燕 来源: 数据之王
相关推荐

2009-11-26 19:18:59

PHP函数implod

2021-03-05 08:31:50

SQLHive语法

2010-10-25 12:05:40

SYS_CONNECT

2011-07-20 17:54:02

C++

2009-11-26 19:05:04

PHP函数explod

2010-09-10 15:16:51

CSSdisplay

2022-02-17 20:34:12

Python短路机制开发

2018-11-13 12:52:50

Linux内核栈回溯

2009-08-27 15:22:27

C#中的GET与SET

2011-08-23 16:22:45

Lua 4.0函数

2011-08-23 15:02:59

LuaTable

2023-05-22 10:40:22

WeakMapsMaps

2010-09-08 15:16:46

clearCSS

2010-09-09 16:54:05

CSSclear

2023-02-02 09:13:12

Hive压缩使用性能分析

2009-11-25 16:55:45

PHP函数explod

2010-09-03 10:18:06

CSSdisplay:inl

2021-02-06 10:27:45

C#函数参数

2011-08-22 17:13:00

LuaC++函数

2010-09-09 11:32:26

SQL函数StDev
点赞
收藏

51CTO技术栈公众号