掌握Hive函数[2]:从基础到高级应用

news/2024/9/22 20:57:24/

目录

高级聚合函数

多进一出

1. 普通聚合 count/sum...

2. collect_list 收集并形成list集合,结果不去重

3. collect_set 收集并形成set集合,结果去重

 案例演示

1. 每个月的入职人数以及姓名

 炸裂函数

 概述

 案例演示

1. 数据准备

1)表结构

2)建表语句

3)装载语句

2. 需求

1)需求说明

2)答案


高级聚合函数

多进一出

(多行传入,一个行输出)

1. 普通聚合 count/sum...
2. collect_list 收集并形成list集合,结果不去重
hive>select sex,collect_list(job)fromemployeegroup by sex

结果

女	["行政","研发","行政","前台"]
男	["销售","研发","销售","前台"]
3. collect_set 收集并形成set集合,结果去重
hive>select sex,collect_set(job)fromemployeegroup by sex

结果

女	["行政","研发","前台"]
男	["销售","研发","前台"]

 案例演示

1. 每个月的入职人数以及姓名
hive>selectmonth(replace(hiredate,'/','-')) as month,count(*) as cn,collect_list(name) as name_listfromemployeegroup bymonth(replace(hiredate,'/','-'))

结果

month  cn  name_list
4	  2	["宋青书","周芷若"]
6	  1	["黄蓉"]
7	  1	["郭靖"]
8	  2	["张无忌","杨过"]
9	  2	["赵敏","小龙女"]

 炸裂函数

 概述

 案例演示

1. 数据准备
1)表结构
moviecategory
《疑犯追踪》悬疑,动作,科幻,剧情
《Lie to me》悬疑,警匪,动作,心理,剧情
《战狼2》战争,动作,灾难
2)建表语句
hive (default)>create table movie_info(movie string,   --电影名称category string  --电影分类
) 
row format delimited fields terminated by "\t";
3)装载语句
insert overwrite table movie_info
values ("《疑犯追踪》", "悬疑,动作,科幻,剧情"),("《Lie to me》", "悬疑,警匪,动作,心理,剧情"),("《战狼2》", "战争,动作,灾难");
2. 需求
1)需求说明

根据上述电影信息表,统计各分类的电影数量,期望结果如下:

剧情2
动作3
心理1
悬疑2
战争1
灾难1
科幻1
警匪1
2)答案
selectcate,count(*)
from
(selectmovie,catefrom(selectmovie,split(category, ',') catesfrom movie_info)t1 lateral view explode(cates) tmp as cate
)t2
group by cate;

http://www.ppmy.cn/news/1523824.html

相关文章

静态代理和动态代理

目录 一、什么是代理模式 二、静态代理 1.定义 2.实现 三、动态代理 1 定义 2 实现 四、静态代理与动态代理 五、总结 一、什么是代理模式 代理模式是一种设计模式,它允许一个对象访问另外一个对象。代理对象通常通过包含真实对象的引用来控制对真实对象的…

Mysql基础练习题 1757.可回收且低脂的产品(力扣)

编写解决方案找出既是低脂又是可回收的产品编号。 题目链接: https://leetcode.cn/problems/recyclable-and-low-fat-products/description/ 建表插入数据: Create table If Not Exists Products (product_id int, low_fats ENUM(Y, N), recyclable …

hive表格统计信息不准确

问题描述 有个hive分区表,orc存储格式,有个分区,查询 select count(1) from table where dtyyyyMMdd 结果是0, 但查询 select * from table where dtyyyyMMdd又能查到数据,去hdfs对应目录下查看,也能看到有…

【JavaEE初阶】多线程(1)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 并发编程 线程 与 进程 创建线程 写法1 写法2 写法3 写法4 写法5 Thread类的常见构造方法 前台/后台 线程 并发编程 并发编程: 通过写特殊的代码 把多个cpu的核心…

Java——踩坑Arrays.asList()

坑1:不能直接使用 Arrsys.asList() 来转换基本类型数据 public static void test1(){// 1、不能直接使用asList来转换基本类型数组int[] arr {1, 2, 3};List list Arrays.asList(arr);System.out.printf("list:%s size:%s class:%s", list, list.size(…

理解 RabbitMQ:生产者、连接、通道、交换机、队列与消费者的消息流

在分布式消息系统中,RabbitMQ 是一个非常流行的消息代理。它的核心理念是解耦应用程序的生产者和消费者,使得消息能够可靠地从一方传递到另一方。本文将带你深入了解 RabbitMQ 中 生产者、连接、通道、交换机、队列 和 消费者 之间的消息流,并…

Agent探索之OpenAI方式调用本地模型(one-api)

介绍 https://github.com/songquanpeng/one-api OpenAI 接口管理 & 分发系统,支持 Azure、Anthropic Claude、Google PaLM 2 & Gemini、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元,可用于二次分发管理 key&…

0910作业+思维导图

一、作业(实现一个闹钟) 1、代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//调整标签页大小this->resize(800,400);//lab:显示系统时间…