HIVE sql:1400亿数据,两个字段u_id,price,取price前十;以及如何优化;(拓展到range分区及动态分区)

本文章向大家介绍HIVE sql:1400亿数据,两个字段u_id,price,取price前十;以及如何优化;(拓展到range分区及动态分区),主要包括HIVE sql:1400亿数据,两个字段u_id,price,取price前十;以及如何优化;(拓展到range分区及动态分区)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

分析:

典型的 Top k 问题么
把价格转成 int,然后按梯度分区,top N 肯定在最大分区里,如果再说的 NB 点,可以说按梯度分区按价格分桶,查询更快
首先我不知道你的价格区间有多大,区间越大分区越多,分而治之的思路,大数据量搞 top n 或其他的,
解决办法都是分而治之,如果你不知道具体实施方案,就想方设法往分而治之的思路上扯,大数据所有的优化方向都是分而治之。

拓展示例:

如何使用列的值范围对Hive表进行分区

Employee ID Salary
1   10000.08
2   20078.67
3   20056.45
4   30000.76
5   10045.14
6   43567.76

  

例如工资范围为 10000 到 20000、20001 到 30000 的分区。

创建按salary_range分区(动态分区)的表:

create table your_table
(
 employee_id bigint,
 salary double
)
partitioned by (salary_range bigint)


插入用于工资范围计算的用例:
insert overwrite table your_table partition (salary_range)   
select employee_id, salary,  
       case 
           when salary between 10000 and 20000 then 20000
           when salary between 20001 and 30000 then 30000 
           ...
           else ...
       end as salary_range 
from some_table;

  

参考:

hiveql - How to partition a Hive Table using range of values for a column - Stack Overflow

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值