当前位置:   article > 正文

Hive collect_set与collect_list_hive的collect的底层数据结构

hive的collect的底层数据结构

1.引言:

collect系列函数顾名思义就是收集,体现在hive中就是把一个key的多个信息收集起来合成一个lsit或者set,唯一的区别是后者可以去重,前者保持原始数据不变,大家也叫这个方法叫列传行,大概意思相同。下面用testTable中的数据进行测试,表中共两列,A为用户名,B为用户购买商品的编号。

TestTable
nameproduct
A1
A2
A2
B1
B3

2.collect_list

collect会根据key以及给定的列收集该key相关的数据并生成列表。

  1. #!/bin/bash
  2. hive -e "
  3. select name,collect_list(product) as product_list from testTable group by name;
  4. "

会得到如下结果,这里也可以获取数组索引,获得指定索引的商品,例如collect_list(product)[0]。

  1. A [1,2,2]
  2. B [1,3]

3.collect_set

collect会根据key以及给定的列收集该key相关的数据并生成集合

  1. #!/bin/bash
  2. hive -e "
  3. select name,collect_set(product) as product_set from testTable group by name;
  4. "

会得到如下结果,这里同样可以进行索引,与上面相同。

  1. A [1,2]
  2. B [1,3]

4.concat_ws

concat_ws的功能是将数组结合的元素根据某字符拼接为字符串,和.join,mkstring方法类似,常和collect函数一起使用。

  1. #!/bin/bash
  2. hive -e "
  3. select name,concat_ws(',',collect_set(product)) as product_string from testTable group by name;
  4. "

 会得到如下结果,也可以修改concat_ws函数的第一个参数修改想要拼接的字符。

  1. A 1,2
  2. B 1,3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/553890
推荐阅读
相关标签
  

闽ICP备14008679号