大数据(3g)HIVE开窗函数应用场景(不定更)

全面总结Hive性能优化(一) 对于hive来说,相信大家都明白, Hive是基于Hadoop的一个数据仓库工具;它是MapReduce的一个封装,底层就是MapReduce程序; Hive可以将结构化的数据文件(按照各字段分类的数据)映射成一张虚表,并提供类SQL查询功能。 由于Hive的执行依赖于底层的MapReduce作业,因此对Hadoop作业的优化或者对MapReduce作业的调整是提高Hive性能的基础。 所以我们可以通过一系列的调优方法来使其提高效率。 为什么Hive运行性能低下? 简单来说hive用查询语句查询数据时,会花 阅读详情

1、回购周期

创建数据

--删库、建库
DROP DATABASE IF EXISTS trade CASCADE;
CREATE DATABASE trade LOCATION '/trade';
USE trade;
--建表
CREATE TABLE sales(
    ymd  STRING COMMENT "日期",
    name STRING COMMENT "顾客",
    sale INT COMMENT "消费"
) COMMENT "日期用户销量汇总表"
LOCATION '/trade/sales';
--插数据
INSERT INTO TABLE sales VALUES
('2020-01-01', '剑圣', 10),('2020-01-02', '守望者', 15),
('2020-01-04', '守望者', 29),('2020-01-05', '剑圣', 46),
('2020-01-07', '守望者', 50),('2020-01-08', '先知', 62),
('2020-01-08', '剑圣', 55),('2020-02-03', '巫妖', 23),
('2020-03-10', '剑圣', 12),('2020-03-10', '巫妖', 12),
('2020-04-05', '先知', 42),('2020-04-06', '先知', 42),
('2020-04-09', '剑圣', 13),('2020-04-09', '守望者', 68);
SELECT
    name,
    LAG(ymd,1) OVER (PARTITION BY name ORDER BY ymd),
    ymd,
    datediff(ymd,LAG(ymd,1) OVER (PARTITION BY name ORDER BY ymd))
FROM sales;

2、TopN系列

创建数据

--删库、建库
DROP DATABASE IF EXISTS fruit CASCADE;
CREATE DATABASE fruit LOCATION '/fruit';
USE fruit;
--建表
CREATE TABLE sales(
name  STRING  COMMENT "产品",
city  STRING  COMMENT "城市",
sale  INT     COMMENT "销量"
)COMMENT "水果销量表"
LOCATION '/fruit/sales';
--插数据
INSERT INTO TABLE sales VALUES
('椰子','佛山',99),
('雪梨','佛山',77),
('苹果','佛山',88),
('椰子','广州',80),
('雪梨','广州',90),
('苹果','广州',70);

2.1、各地销量Top2

第一步,增加排序列:按城市分区,按销量降序【关键字OVER】

SELECT
    city,
    name,
    sale,
    RANK() OVER(PARTITION BY city ORDER BY sale DESC)
FROM sales;

第二步,使用排序列来筛选

SELECT * FROM(
    SELECT
        city,
        name,
        sale,
        RANK() OVER(PARTITION BY city ORDER BY sale DESC)AS r
    FROM sales
)t
WHERE r<=2;

原始数据

第一步结果

第二步结果

2.2、销量前33%

  1. 开窗 并 按销量降序
  2. ntile给数据按比例分组,ntile(3)就是分3组
  3. 前33%可以是分100组取前33,或者分3组取前1
WITH t100 AS (
     SELECT
         city,
         name,
         sale,
         ntile(100) OVER(ORDER BY sale DESC)AS r
     FROM sales
 )
SELECT * FROM t100 WHERE r<=33;

或

WITH t3 AS (
     SELECT
         city,
         name,
         sale,
         ntile(3) OVER(ORDER BY sale DESC)AS r
     FROM sales
 )
SELECT * FROM t3 WHERE r<=1;

中间结果t3

最终结果

3、每个人连续签到的最大天数

  1. 开窗,按uid分组,日期排序,排名;
    日期减排名;
SELECT
    uid,
    dt,
    DATE_SUB(dt,RANK() OVER (PARTITION BY uid ORDER BY dt))d
FROM t;
  1. 按uid和日期减排名分组并计数;
SELECT uid,count(1)c FROM temp0
GROUP BY uid,d
  1. 按uid分组并取最大值。
SELECT uid,max(c) FROM temp1
GROUP BY uid

4、运费分摊

https://yellow520.blog.youkuaiyun.com/article/details/113790083

5、页面单跳转化率

https://yellow520.blog.youkuaiyun.com/article/details/116200798

6、并行计算获取消费金额topN的用户ID

https://yellow520.blog.youkuaiyun.com/article/details/120188295

7、去重

https://yellow520.blog.youkuaiyun.com/article/details/120764731

8、同比 环比

https://yellow520.blog.youkuaiyun.com/article/details/121531348

2023大数据面试真题(持续更新) 5.有两个数据源,一个记录的是广告投放给用户的日志,一个记录用户访问日志,另外还有一个固定的用户基础表记录用户基本信息(比如学历,年龄等等)。9.线上业务每天产生的业务日志(压缩后>=3G),每天需要加载到hive的log表中,将每天产生的业务日志在压缩之后load到hive的log表时,最好使用的压缩算法是哪个,并说明其原因。为什么不用 Hive 默认的分隔符,默认的分隔符是什么?41.有一千万条短信,有重复,以文本文件的形式保存,一行一条数据,请用五分钟时间,找出重复出现最多的前10条。 阅读详情

相关推荐

大数据面试通关手册|Hive面试题(二)

1.大表join小表产生的问题,怎么解决? 2.udf udaf udtf区别 3.hive有哪些保存元数据的方式,个有什么特点。 4.hive内部表和外部表的区别 6.insert into 和 override write区别? 7.hive的判断函数有哪些 8.简单描述一下HIVE的功能?用hive创建表几种方式?hive表有几种? 9.线上业务每天产生的业务日志(压缩后>=3G),每天需要加载到hive的log表中,将每天产生的业务日志在压缩之后load到hive的log表时..

微信搜:import_bigdata,大数据领域硬核原创作者 567

SQL-一些开窗函数使用场景(OVER+lag)

OVER()利用Year进行分组,然后利用Month进行组内排序比如row_number():可以在over函数执行的基础上对Month进行比如在over函数基础上加Rank()函数 ,就是随机那种了Month的话就会重复排序,例子每个部门进行薪水排名——>扩展:取每个部门的第一个或者最后一名查询每个学生的分数最高的前3门课程。

weixin_57128596的博客 4414

unity制作交互视频/互动视频

unity制作交互视频/互动视频 思路 1.先让unity播放视频 2. 视频播放结束后,视频暂停,按钮出现 3.按钮跳转下一个视频 视频播放 先创建UI-Raw Iamge 在Raw Iamge 挂载组件 Video Player 接着挂载视频播放的脚本 using UnityEngine; using UnityEngine.UI; using UnityEngine.Video; publi...

weixin_45588911的博客 8423

场景案例,最全面的Hive开窗函数讲解和实战指南(必看)

Hive 窗口函数不同于我们熟悉的常规函数及聚合函数,它为每行数据进行一次计算,特点是输入多行(一个窗口)、返回一个值。在报表等数据分析场景中,窗口函数真的很强大,灵活运用窗口函数可以解决很多复杂问题,比如去重、排名、同比及环比、连续登录等等。

公众号:白程序员的自习室 2487

XianYuAutoDeliveryX:基于闲鱼API与大模型的智能自动发货系统实践

本文详细介绍了如何利用XianYuAutoDeliveryX系统,结合闲鱼API与大语言模型,构建一个智能自动发货解决方案。该系统能实现买家付款后秒级自动发货,并通过对接ChatGPT等大模型智能回复买家咨询,有效解放卖家时间,提升虚拟商品店铺的运营效率和客户体验。

bush的博客 1013

Unity手游优化实战:用GPU Instancing把草地渲染的DrawCall从8000降到20(附完整Shader)

本文详细介绍了Unity手游中利用GPU Instancing技术优化草地渲染的实战方法,将DrawCall从8000降至20。通过Shader改造和性能优化技巧,开发者可以在移动端实现高效渲染,显著提升游戏性能。文章包含完整的Shader代码和优化策略,适合Unity开发者学习应用。

weixin_33691817的博客 488

【必看】最全开窗函数讲解和实战指南

窗口函数

赵英超的博客 8080

无限泛化!AI背景文字识别,腾讯文字六宫格

本文介绍了生成大规模文字验证码数据集的方法,通过使用上百种字体和2万+字库,结合随机背景和数十种图像增强技术,生成了2000万+的多样化样本。该方法采用二阶段训练策略,确保模型对字体、形态、形变等具有强泛化能力,可适配腾讯、咸鱼等多种平台的文字验证码识别,包括生僻字和复杂形变情况。生成的模型在多种验证码场景下表现优异,但强调该方法仅用于技术研究,严禁非法用途。

码王吴彦祖的博客 561

Oracle应用之开窗函数笔记及应用场景

介绍Oracle的开窗函数之前先介绍一下分析函数,因为开窗函数也属于分析函数 分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。 上面是开窗函数over(…)的简单介绍。 开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化 oracle开窗函数使用的话一般是和order、partition by...

Nicky's blog 4406

Spring AI 实战:第五章、Spring AI本地模型部署之省钱小能手

白嫖的快乐你想象不到经过这番折腾,我们成功实现了零成本使用大模型完全本地运行保障隐私可视化访问Java生态无缝集成但可能有的小伙伴要吐槽,怎么换个底层模型这次就新建一个工程了呢?不能在以前的工程上开发吗?这样也太不优雅了吧~,我知道你很急,但先别急,等下一章节再来解决这个问题。为什么程序员特别喜欢Ollama?因为它就像一只温顺的羊驼——不花钱还能24小时产出代码!

liaokailin的专栏 921

汽车OTA 测试用例

汽车OTA 测试用例

天赐好车的博客 973

窗口函数、开窗函数ROW_NUMBER() OVER(PARTITION BY …… ORDER BY ……)

开窗函数语法:窗口函数 over(partition by 列名1 order by 列名2 ),窗口函数可以是ROW_NUMBER(),也可以是其他,会一个其他都是大同小异,本节就以它举例,它的作用就是可以给每一条记录生成一个唯一的行号。配合partition by 就可以在“列名1”此列,值相同的记录中给每一条记录从1依次递增生成唯一的逻辑行号,加上order by就可以实现自定义排序。 开窗函数只是相对于聚合函数而言的,聚合函数是将group by后的分组聚合成单条数据,而开窗函数后的over(英文.

卖炫迈的小男孩的博客 6379

示波器核心参数选型指南:带宽、采样率与嵌入式调试实战

示波器是电子工程师进行信号观测与故障诊断的基础仪器,其性能由带宽、采样率、通道数、存储深度、触发系统和探头特性共同决定。带宽定义高频响应边界,需遵循5倍法则以保障数字信号上升沿测量精度;采样率则依据奈奎斯特定理并结合工程冗余(通常≥2.5×带宽)实现可靠时域重建。二者协同影响信号完整性评估能力,尤其在UART、I²C、SPI等嵌入式总线调试中至关重要。高存储深度支持长时捕获与毛刺定位,智能触发与硬件协议解码进一步将波形分析升维至语义级。本文围绕真实嵌入式场景,解析参数间的耦合关系与典型误用陷阱。

weixin_42588877的博客 91

大数据常见面试题及答案

大数据常见面试题及答案,大部分都有涉及

遐想者 3万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

大数据开发:Hive小文件合并

Hadoop生态技术体系下,负责大数据存储管理的组件,涉及到HDFS、Hive、Hbase等。Hive作为数据仓库工具,最初的存储还是落地到HDFS上,这其中就有一个关键的环节,是小文件的处理。今天的大数据开发分享,我们就主要来讲讲,Hive小文件合并。 本身来说,由于Hadoop的特性,对大文件的处理非常高效。大文件可以减少文件元数据信息,减轻NameNode的存储压力。相对于上层的数据表汇总程度高,底层就会面临小文件越来越多的问题。 一、小文件带来的问题 HDFS的文件包好数据块和元信息,其中

shuimuzh123的博客 298

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

hive新功能 Cube, Rollup介绍

说明:hive之cube、rollup,还有窗口函数,在传统关系型数据(oracle、sqlserver)中都是有的,用法都很相似。 GROUPING SETS GROUPING SETS作为GROUP BY的子句,允许开发人员在GROUP BY语句后面指定多个统计选项,可以简单理解为多条group by语句通过union all把查询结果聚合起来结合起来,下面是几个实例可以帮助我们了

扫大街的程序员 2万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

2020大数据面试题真题总结(附答案)

版本更新时间更新内容v1.02020-07-01新建v1.12020-07-18朋友面试大数据工程师提供的关于架构及数仓方面的题目(智云健康)v1.22020-08-08朋友面试数据专家...

过往记忆大数据 1万+

pyspark读取hive数据写入到redis

1、首先把redis包引入工程,这样就不需要在集群里每台机器上安装redis客户端。 $pip install redis $cd /usr/local/lib/python3.6/dist-packages/ 找到自己环境的路径 $zip -r redis.zip redis/* $hadoop fs -put redis.zip /user/data/ 2、在代码里使用 addPyFile加...

TURING.DT 4000

hive 进入hiveshell

我整理的一些关于【SQL】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://edu.51cto.com/surl=QDW3g3Hive 进入 HiveShell 的完整指南 在大数据生态系统中,Apache Hive 是一个非常重要的工具,它使得用户可以通过类似 SQL 的查询语言来访问和管理存储在 ...

weixin_36710819的博客 178

hive中contain

我整理的一些关于【SQL】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://edu.51cto.com/surl=QDW3g3使用 Hive 实现“Contain”功能的指南 在数据处理与分析的世界中,Apache Hive 是一个重要的工具,特别是在处理大数据时。若你想在 Hive 中实现“cont...

weixin_42094592的博客 212

hive加载大文件(3G)

1:上传文件到hadoop

风行天下 2356

【6w字干货】2020大数据面试题真题总结(附答案)

版本更新时间更新内容v1.02020-07-01新建v1.12020-07-18朋友面试大数据工程师提供的关于架构及数仓方面的题目(智云健康)v1.22020-08-08朋友面试数据专家...

简说Python的博客 3190

大数据课程F2——HIve的安装操作

如果不指定,无论是Hive的哪一个版本,都默认使用Derby(微型,单连接)来作为元数据库,就意味着Hive每次都只能允许一个用户连接,因此需要更换Hive的元数据库。a. 在Hive中,同样需要建库建表,这个时候产生的库名、表名、字段名、分区名、分桶信息、函数、数据类型等信息都属于元数据,这些数据是用于描述Hive中数据的特点,统称为元数据。b. Hive的元数据是维系在关系型数据库中的(Hive管理的数据存储在HDFS上,Hive的元数据存储在数据库中)。要求硬件环境内存不少于3G。

u013955758的专栏 720
上一篇: 大数据(5d)Phoenix
下一篇: 大数据(8p)SparkStreaming精准一次消费Kafka
小基基o_O
博客等级 码龄9年 4413粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值