Hive常用高级操作

1. 分组去重

取出连续七天都有交易记录的用户的每天的第一笔订单

思路,先通过(用户名, 交易时间)排序,然后使用row_number() over (partition by 用户名,交易时间(年月日) order by 时间戳) 进行去重,得到每个用户每一天的第一笔交易 ;然后将该表作为子表,再通过group by 用户 筛选出交易天数=7的用户。

关键语句:

select f1, f2 from

    (select f1,f2,row_number()  over( partition by f1 order by f2 asc) rn  from tb)
where rn = 1;

2. 窗口函数

rank、dense_rank、row_number

基本用法:select f1,f2,row_number()  over( partition by f1 order by f2 asc) rn  from t

功能相同,都是用于给记录编号,编号方式有细微差别

rank编号时,相同的记录,编号相同,但后续记录会跳过重复次数继续编号(如有两条相同记录,两条记录都被编号为3,则紧跟其后的下一条记录被编号为5)

dense_rank 与rank类似,但在有重复记录时,后续编号依然连续

row_number 连续编号,每条记录的编号不同,即使记录相同

 

3. ntile:将数据按照指定数字均分分配到多个桶中,可用于取出前1/n的数据

参考:Hive分析函数--Ntile

select * from (
select id,
name,
sal,
NTILE(2) over(partition by name order by sal desc ) rn
from f_test
) t where t.rn=1

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当涉及到Hive SQL的高级技巧时,以下是一些常用的技巧和功能: 1. 分区和桶:Hive支持数据的分区和桶,这可以提高查询性能。通过将数据分成更小的块,可以减少需要扫描的数据量。分区是根据某个列的值进行数据划分,而桶则是根据哈希函数将数据分成固定数量的块。 2. 自定义函数:Hive允许用户编写自定义函数来满足特定的需求。通过自定义函数,可以在Hive中使用自定义的逻辑和操作。 3. 窗口函数:Hive支持窗口函数,这使得在查询中进行聚合计算变得更加灵活。窗口函数可以对一组行进行计算,并返回结果集中的每一行。 4. 嵌套查询:Hive支持嵌套查询,这允许在一个查询中嵌套另一个查询。嵌套查询可以用于处理复杂的逻辑和多个数据源。 5. 表连接:Hive支持不同类型的表连接操作,如内连接、外连接和交叉连接。表连接可以用于将多个表中的数据关联起来,以便进行更复杂的查询和分析。 6. 动态分区:Hive允许在加载数据时动态创建分区。这对于处理动态数据和频繁更新的数据非常有用。 7. 压缩:Hive支持数据的压缩,这可以减少存储空间和提高查询性能。常见的压缩格式包括Snappy、Gzip和LZO。 8. 数据倾斜处理:当某个列的值分布不均匀时,可能会导致查询性能下降。Hive提供了一些技术来处理数据倾斜,如使用随机前缀、使用桶等。 9. 性能调优:Hive提供了一些性能调优的选项,如设置合适的并行度、调整内存配置、使用合适的文件格式等。这些调优选项可以提高查询性能和执行效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值