分析:
典型的 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;
参考: