赞
踩
collect系列函数顾名思义就是收集,体现在hive中就是把一个key的多个信息收集起来合成一个lsit或者set,唯一的区别是后者可以去重,前者保持原始数据不变,大家也叫这个方法叫列传行,大概意思相同。下面用testTable中的数据进行测试,表中共两列,A为用户名,B为用户购买商品的编号。
name | product |
A | 1 |
A | 2 |
A | 2 |
B | 1 |
B | 3 |
collect会根据key以及给定的列收集该key相关的数据并生成列表。
- #!/bin/bash
- hive -e "
- select name,collect_list(product) as product_list from testTable group by name;
- "
会得到如下结果,这里也可以获取数组索引,获得指定索引的商品,例如collect_list(product)[0]。
- A [1,2,2]
- B [1,3]
collect会根据key以及给定的列收集该key相关的数据并生成集合。
- #!/bin/bash
- hive -e "
- select name,collect_set(product) as product_set from testTable group by name;
- "
会得到如下结果,这里同样可以进行索引,与上面相同。
- A [1,2]
- B [1,3]
concat_ws的功能是将数组结合的元素根据某字符拼接为字符串,和.join,mkstring方法类似,常和collect函数一起使用。
- #!/bin/bash
- hive -e "
- select name,concat_ws(',',collect_set(product)) as product_string from testTable group by name;
- "
会得到如下结果,也可以修改concat_ws函数的第一个参数修改想要拼接的字符。
- A 1,2
- B 1,3
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。