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

时间:2017-07-30 08:56:53

标签: hive hiveql

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

数据如下所示。

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

我想基于Salary Column创建分区。对于薪水范围10000到20000,20001到30000的示例分区。

我如何实现这一目标。

1 个答案:

答案 0 :(得分:4)

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;