4

我有一个带有 2 列的 Hive 表。员工 ID 和薪水。

数据如下所示。

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 的分区。

我如何做到这一点。

4

1 回答 1

5

Hive 不支持范围分区,但您可以在数据加载期间计算范围。

  1. 创建按salary_range分区的表:

    create table your_table
    (
     employee_id bigint,
     salary double
    )
    partitioned by (salary_range bigint)
    
  2. 插入用于工资范围计算的案例:

    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;
    
于 2017-07-30T11:54:04.010 回答