Hive【Hive(五)函数-高级聚合函数、炸裂函数】
高级聚合函数
多进一出(多行输入,一个输出)
普通聚合函数:count、sum ...
1)collect_list():收集并形成 list 集合,结果不去重
select sex,collect_list(job)
from employee
group by sex;
--女 ["行政","研发","行政","前台"]
--男 ["销售","研发","销售","前台"]
2)collect_set():收集并形成 set 集合,结果去重
select sex,collect_set(job)
from employee
group by sex;
--女 ["行政","研发","前台"]
--男 ["销售","研发","前台"]
案例
1)每个月的入职人数以及姓名
select month(replace(hire_date,'/','-')) as month,count(*) cnt,collect_list(name) as name_list
from employee
group by month(replace(hire_date,'/','-'));
运行结果:
month cnt name_list
4 2 ["宋青书","周芷若"]
6 1 ["黄蓉"]
7 1 ["郭靖"]
8 2 ["张无忌","杨过"]
9 2 ["赵敏","小龙女"]
炸裂函数(UDTF)
接受一行数据,输出一行或多行数据。
TF(Table-Genrating Functions),表生成函数,也就是说这个函数的结果是一张表。
1、常用 UDTF - explode(array<T> a)
explode(array<T> a)接受一个数组类型的参数,它会把这一个数组炸裂成一个列(多行)。
语法
select explode(array("a","b","c"))as item;
-- item
-- a
-- b
-- c
2、 常用 UDTF - explode(Map<K,V> m)
返回多行2列(key,value)。
语法
注意:不加别名时,它默认的字段也是 key 和 value,我们自定义多个字段名时需要加括号。
select explode(map('hadoop','1','spark',2)) as (key,value);
-- key value
-- hadoop 1
-- spark 2
3、常用 UDTF - posexplode(array<T> a)
接受一个数组 array ,pos 的意思是 position ,也就是数组的下标。它返回多行两列,一列为 pos(索引) ,一列是 val(值)。
select posexplode(array('a','b','c'));
-- pos val
-- 0 a
-- 1 b
-- 2 c
4、常用 UDTF - inline(array<struct<f1:T1,...,fn:Tn>> a)
它接受一个 结构体数组 ,返回多行多列,列数=结构体的属性数量。
注意:每个结构体的属性数量必须一致。
select inline(array(named_struct("id",1,"name","zs","age",15),named_struct("id",2,"name","ls","age",17),named_struct("id",3,"name","ww","age",23))) as (id,name,age);
运行结果:

Lateral View(常用)
Lateral View 通常与UDTF 配合使用。它可以将UDTF应用到源表的每行数据,UDTF会将每行数据转换为一行或多行,Lateral View会将源表中每行的输出结果与该行连接起来,形成一个虚拟表。

数据准备
create table movie_info(movie string, --电影名称category string --电影分类
)
row format delimited fields terminated by "\t";insert overwrite table movie_info
values ("《疑犯追踪》", "悬疑,动作,科幻,剧情"),("《Lie to me》", "悬疑,警匪,动作,心理,剧情"),("《战狼2》", "战争,动作,灾难");
函数演示
selectmovie,category_name
from
movie_info
lateral view
explode(split(category,",")) movie_info_tmp as category_name;
运行结果:

select cate,count(*)
from (select movie,catefrom (select movie,split(category,',') catesfrom movie_info)t1 lateral view explode(cates) tmp as cate
)t2
group by cate;
运行结果:

窗口函数
明天写
相关文章:
Hive【Hive(五)函数-高级聚合函数、炸裂函数】
高级聚合函数 多进一出(多行输入,一个输出) 普通聚合函数:count、sum ... 1)collect_list():收集并形成 list 集合,结果不去重 select sex,collect_list(job) from e…...
zabbix(二)
文章目录 1. zabbix自定义监控项【配置】2. zabbix自定义监控项【传参】3. zabbix自定义触发器4. zabbix邮件告警4. zabbix企业微信告警 1. zabbix自定义监控项【配置】 目前有主机zabbix-server: 10.0.0.10 zabbix-slave: 10.0.0.11 zabbix监控的内容,想平滑转移到…...
容器安全检测工具KubeHound使用
前言 Kubernetes集群攻击路径AES工具 安装 下载kubehound git clone https://github.com/DataDog/KubeHound.git 安装docker compose插件 Docker compose插件安装_信安成长日记的博客-CSDN博客 启动kubehound后端服务 即要开大内存,不然db起不来,…...
机器学习笔记 - 基于强化学习的贪吃蛇玩游戏
一、关于深度强化学习 如果不了解深度强化学习的一般流程的可以考虑看一下下面的链接。因为这里的示例因为在PyTorch 之上实现深度强化学习算法。 机器学习笔记 - Deep Q-Learning算法概览深度Q学习是一种强化学习算法,它使用深度神经网络来逼近Q函数,用于确定在给定状态下采…...
C++_pen_类
类的成员函数 构造函数析构函数普通成员函数 构造函数与析构函数 #include <stdio.h> class STU{ public:STU(){printf("STU\n");}STU(int id){printf("STU(int id)\n");}~STU(){printf("STU Bye!!!\n");} };int main(int argc, char c…...
MySQL 多表关联查询优化实践和原理解析
目录 一、前言二、表数据准备三、表关联查询原理和两种算法3.1、研究关联查询算法必备知识点3.2、嵌套循环连接 Nested-Loop Join(NLJ) 算法3.3、基于块的嵌套循环连接 Block Nested-Loop Join(BNL)算法3.4、被驱动表的关联字段没索引为什么要选择使用 BNL 算法而不使用 Nested…...
LeNet网络复现
文章目录 1. LeNet历史背景1.1 早期神经网络的挑战1.2 LeNet的诞生背景 2. LeNet详细结构2.1 总览2.2 卷积层与其特点2.3 子采样层(池化层)2.4 全连接层2.5 输出层及激活函数 3. LeNet实战复现3.1 模型搭建model.py3.2 训练模型train.py3.3 测试模型test…...
Oracle 慢查询排查步骤
目录 1. Oracle 慢查询排查步骤1.1. 前言1.2. 排查步骤1.2.1. 查询慢查询日志1.2.2. Oracle 查询 SQL 语句执行的耗时1.2.3. 定位系统里面哪些 SQL 脚本存在 TABLE ACCESS FULL (扫全表) 行为1.2.4. 查看索引情况1.2.5. 查看锁的竞争情况1.2.6. 其他锁语句 1.3. 慢查询优化1.3.…...
互联网Java工程师面试题·MyBatis 篇·第二弹
目录 16、Xml 映射文件中,除了常见的 select|insert|updae|delete标签之外,还有哪些标签? 17、Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复? 18、为什么说 Mybatis 是半自动 ORM 映射…...
Linux 下如何调试代码
debug 和 release 在Linux下的默认模式是什么? 是release模式 那你怎么证明他就是release版本? 我们知道如果一个程序可以被调试,那么它一定是debug版本,如果它是release版本,它是没法被调试的,所以说我们可以来调试一…...
腾讯云服务器简介和使用流程
腾讯云服务器在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵,但是自定义购买云服务器CPU内存带宽配置选择范围广,活动上购买只能选择固定的活动机,选择范围窄,但是云服务器价格便宜比较省钱。腾讯云服务器网来详细说下腾…...
python 二分查找
1.二分查找首先被查找的序列是一个有序的。 2.明确序列的左右边界 3.找出序列中间的元素,判断如果是要查找的元素,返回元素 4.如果中间元素,大于或者小于查找的元素,那么改变左右边间,直到中间的数等于查找的元素。…...
通过async方式在浏览器中调用web worker
通过async方式在浏览器中调用web worker 近年来,网络应用程序变得越来越复杂,增加了越来越多的功能。因此,性能和响应性已成为 Web 开发人员关注的重点。解决这个问题的一个办法是使用web worker。 web worker简介 web worker是一个 javas…...
FPGA project : TFT_LCD
实验目标: 驱动TFT_LCD显示十色彩条。 重点掌握的知识: 1,液晶显示器,简称LCD(Liquid Crystal Display),相对于上一代CRT显示器(阴极射线管显示器),LCD显示器具有功耗低、体积小、承载的信息量大及不伤眼…...
2023年-华为机试题库B卷(Python)【满分】
华为机试题库B卷 已于5月10号 更新为2023 B卷 (2023-10-04 更新本文) 华为机试有三道题目,前两道属于简单或中等题,分值为100分,第三道为中等或困难题,分值为200分。总分为 400 分,150分钟考试…...
创建GCP service账号并管理权限
列出当前GCP项目的所有service account 我们可以用gcloud 命令 gcloud iam service-accounts list gcloud iam service-accounts list DISPLAY NAME EMAIL DISABLED terraform …...
想要精通算法和SQL的成长之路 - 验证二叉树
想要精通算法和SQL的成长之路 - 验证二叉树 前言一. 验证二叉树1.1 并查集1.2 入度以及边数检查 前言 想要精通算法和SQL的成长之路 - 系列导航 并查集的运用 一. 验证二叉树 原题链接 思路如下: 对于一颗二叉树,我们需要做哪些校验? 首先…...
ERROR 6400 --- [ main] com.zaxxer.hikari.pool.HikariPool : root - Exception
在引用的日志中,报告了Hikari连接池初始化期间的异常。具体异常信息是"Exception during pool initialization"。这个异常可能是由于与MySQL数据库的通信链接失败导致的。在引用中也提到了与SSL连接相关的错误。 根据引用中提供的代码,可以看到…...
CART算法解密:从原理到Python实现
目录 一、简介CART算法的背景例子:医疗诊断 应用场景例子:金融风控 定义与组成例子:电子邮件分类 二、决策树基础什么是决策树例子:天气预测 如何构建简单的决策树例子:动物分类 决策树算法的类型例子:垃圾…...
C++项目:【高并发内存池】
文章目录 一、项目介绍 二、什么是内存池 1.池化技术 2.内存池 3.内存池主要解决的问题 4.malloc 三、定长的内存池 四、高并发内存池整体框架设计 1.高并发内存池--thread cache 1.1申请内存: 1.2释放内存: 1.3用TLS实现thread cache无锁访…...
地下水位监测仪:实现深井水位远程自动观测
设备是什么地下水位监测仪是一种用于测量地下水、矿山井或地热井中水位高度的仪器。它采用投入式探头设计,基于静水压力原理工作:当传感器探头固定在水下某一点时,通过感知该点上方水柱产生的压力,结合安装高程,即可换…...
从网页地图卡顿说起:深入理解瓦片加载与前端性能优化(Leaflet/Mapbox实战)
从网页地图卡顿说起:深入理解瓦片加载与前端性能优化(Leaflet/Mapbox实战) 当用户在地图应用中频繁缩放拖拽却遭遇卡顿、白屏时,体验会瞬间崩塌。作为前端开发者,我们该如何从底层机制入手解决这些问题?本文…...
LynxPrompt Action:GitHub Actions 实现 AI 配置中心化与自动化管理
1. 项目概述:为什么我们需要一个AI配置的“中央仓库”? 如果你和我一样,日常开发中同时用着Cursor、Claude Code、GitHub Copilot,甚至还在尝试Windsurf和Aider,那你一定遇到过这个头疼的问题:每个工具的配…...
跨端三维GIS实战:uni-app集成Cesium.js的RenderJS方案解析
1. 为什么需要跨端三维GIS解决方案 最近几年三维GIS应用越来越普及,从传统的Web端到移动端APP,开发者都希望实现"一次开发,多端运行"的目标。uni-app作为跨端开发框架,天然具备这个优势。但当我们想在uni-app中集成Cesi…...
RISC-V汽车电子开发:功能安全认证工具链的挑战与实践
1. 项目概述:RISC-V在汽车领域的破局与挑战最近和几个在主机厂和Tier 1做嵌入式开发的老朋友聊天,话题总绕不开芯片选型和开发工具。大家普遍的感觉是,传统的Arm架构虽然生态成熟,但在追求极致能效比和定制化的今天,成…...
Gemini自动生成PPT实战手册:从零输入到专业演示文稿,3步完成95%的幻灯片工作流
更多请点击: https://intelliparadigm.com 第一章:Gemini自动生成PPT的核心原理与能力边界 Gemini 生成 PPT 的本质并非传统模板填充,而是基于多模态理解与结构化内容重构的端到端推理过程。其核心依赖于对用户输入(文本、大纲、…...
微信视频下载器wx_channels_download
微信视频下载器ltaoo/wx_channels_download(跨平台轻量首选) 特点:体积小、使用简单,在微信PC端视频下方添加“下载”按钮;支持 macOS 和 Windows。优点:集成式(无需单独监听)&…...
故障排查实录:i40e网卡队列超时引发的虚拟机网络中断
1. 故障现象与初步排查 那天早上刚到办公室,就接到业务部门的紧急电话:"虚拟机上的Web服务突然无法访问了!"作为运维工程师,这种网络中断的报修电话总是让人心头一紧。我立即登录到KVM宿主机,发现两台虚拟机…...
别再死记公式了!用Multisim仿真带你玩转反相/同相比例运算电路
用Multisim仿真解锁比例运算电路的实战奥秘 在电子工程的学习中,运算放大器电路一直是让初学者又爱又恨的内容。传统的学习方法往往从公式推导开始,要求学生死记硬背各种电路配置下的增益公式。但今天,我们要打破这种枯燥的学习方式——通过…...
Intel Wi-Fi 6 AX201网卡间歇性断连?华硕飞行堡垒8用户必看的节能模式与驱动管理避坑指南
Intel Wi-Fi 6 AX201网卡间歇性断连?华硕飞行堡垒8用户必看的节能模式与驱动管理避坑指南 当你的华硕飞行堡垒8笔记本突然无法连接Wi-Fi,设备管理器里Intel Wi-Fi 6 AX201网卡显示黄色感叹号并提示"代码10"错误时,这往往不是简单的…...
