Hive中collect相关的函数有collect_list和collect_set。

它们都是将分组中的某列转为一个数组返回,不同的是collect_list不去重而collect_set去重。

做简单的实验加深理解,创建一张实验用表,存放用户每天点播视频的记录:create table t_visit_video (

username string,

video_name string

) partitioned by (day string)

row format delimited fields terminated by ',';

在本地文件系统创建测试数据文件:张三,大唐双龙传

李四,天下无贼

张三,神探狄仁杰

李四,霸王别姬

李四,霸王别姬

王五,机器人总动员

王五,放牛班的春天

王五,盗梦空间

将数据加载到Hive表:load data local inpath '/root/hive/visit.data' into table t_visit_video partition (day='20180516');

按用户分组,取出每个用户每天看过的所有视频的名字:select username, collect_list(video_name) from t_visit_video group by username ;

但是上面的查询结果有点问题,因为霸王别姬实在太好看了,所以李四这家伙看了两遍,这直接就导致得到的观看过视频列表有重复的,所以应该增加去重,使用collect_set,其与collect_list的区别就是会去重:select username, collect_set(video_name) from t_visit_video group by username;

李四的观看记录中霸王别姬只出现了一次,实现了去重效果。

突破group by限制

还可以利用collect来突破group by的限制,Hive中在group by查询的时候要求出现在select后面的列都必须是出现在group by后面的,即select列必须是作为分组依据的列,但是有的时候我们想根据A进行分组然后随便取出每个分组中的一个B,代入到这个实验中就是按照用户进行分组,然后随便拿出一个他看过的视频名称即可:select username, collect_list(video_name)[0] from t_visit_video group by username;

video_name不是分组列,依然能够取出这列中的数据。

.

mysql collect set_Hive笔记之collect_list/collect_set(列转行)相关推荐

  1. hive 如何将数组转成字符串_hive详细笔记(八)-Hive之列转行和行转列(附带讲解视频 )...

    1 行转列 1.1 函数 CONCAT(string A/col, string B/col-):返回输入字符串连接后的结果,支持任意个输入字符串; CONCAT_WS(separator, str1 ...

  2. mysql 一行转多多行_JS 小工具 MYSQL WHERE IN条件 去掉换行符(列转行)

    MYSQL_WHERE_IN_去掉换行符(列转行) textarea { width: 1000px; height: 500px; } button { height: 50px; display: ...

  3. Hive 之collect_list/collect_set(列转行)

    Hive笔记之collect_list/collect_set(列转行) Hive中collect相关的函数有collect_list和collect_set. 它们都是将分组中的某列转为一个数组返回 ...

  4. mysql then_mysql语法之case when then与列转行

    mysql语法中case when then与列转行的使用场景非常丰富. case语句类似java中条件分支语句的作用,可以类比java中的switch语句或者if语句来学习. 其语法如下: case ...

  5. 好友推荐(列转行,help_topic_id)

    文章目录 前言 一.题目:好友推荐 二.代码块 1.源代码 2.SQL分解 前言 本题主要分享一下结合mysql.help_topic 这张系统表做列转行的一些巧妙的解题思想. 一.题目:好友推荐 1 ...

  6. IT老齐架构300讲笔记(049) 比MySQL快100倍,解读cassandra列式数据库高性能背后的原理

    目录 一.列式存储 二.为什么列式存储性能这么高 2.1 行式存储查询的劣势 2.2 列式存储查询的优势(顺序读) 2.3 列式存储的问题 专栏链接:IT老齐架构300讲笔记专栏 一.列式存储 列式数 ...

  7. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. MySQL 索引学习笔记

    MySQL 索引学习笔记 索引基本概念 索引优点 B-Tree 索引 基本原理 使用场景 使用限制 哈希索引 基本原理 使用限制 自适应哈希索引 处理哈希冲突 相关面试题 高性能索引策略 独立的列 前 ...

  9. MySQL(狂神说笔记)

    MySQL(狂神说笔记) 1.初始数据库 1.1为什么学习数据库? 1.岗位需求 2.现在的世界,大数据时代,得数据库者得天下. 3.被迫需求: 存数据 4.数据库是所有软件体系中最核心的存在: DB ...

最新文章

  1. Linux的文件管理命令
  2. c++中的左移、右移运算
  3. 内容自适应编码中的不同粒度
  4. mysql改密码脚本_mysql密码修改脚本
  5. c程序语言的常量变量和标识符,浅谈C语言中的常量与变量.pdf
  6. Python 之 文件
  7. CentOS7下GNOME桌面的安装
  8. libvlc获取一帧_用VLC 实现获取播放每帧视频的时间(UTC)
  9. java robot识别验证码,robotframework处理登录验证码
  10. 这些关于JAVA基础类的(常用关键字)你都了解了吗?还没搞明白的朋友建议收藏慢慢看~
  11. 【LINUX】自己整理的干货,拿去看吧,不谢!!!。。。。。。。。。。。。
  12. 如何察看僵尸进程 zombie
  13. C#生成条形码图片的简单方法
  14. 遗传算法求解3D打印中零件二维排布问题(MATLAB实现)
  15. 解决Eclipse中的卡死现象
  16. Schlemm管内荧光素钠造影术/活化PⅡb/Ⅲa配体MRI显影剂/肝素标记超顺磁氧化铁粒子(Hep-SPIO)
  17. 我来到博客大世界啦!
  18. 百度小程序接入搜索结果-标准化服务SPU指导手册
  19. 2021 Principled Synthetic-to-Real Dehazing Guided by Physical Priors oral解读
  20. comsol圆柱形永磁体_几组特殊形状永磁体的磁场及梯度COMSOL分析

热门文章

  1. 【Auto CAD】Architecture2019 (Win 10 X 64位)中文版/英文版下载和破解安装
  2. 在 Intune 中配置 Windows Defender 防病毒
  3. 新能源车“乱战时代”,车企们在争什么?
  4. Hashmap解决hash冲突为什么使用红黑树
  5. TCP怎么保证数据的可靠性?
  6. 开源软件中的商标问题
  7. USB SIM Card Reader驱动
  8. 红米Note9Pro刷TWRP,并刷入Magisk面具获取root权限教程
  9. (三十二)c#Winform自定义控件-表格
  10. win7 ftp服务器文件访问权限,win7 ftp服务器 文件夹权限