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

Hive 如何使用列的值范围对配置单元表进行分区,hive,hiveql,hive-partitions,hiveddl,Hive,Hiveql,Hive Partitions,Hiveddl,我有一个包含两列的配置单元表。员工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的分区 如何实现这一点。Hive不支持范围分区,但您可以在数据加载期间计算范围 创建按薪资范围划分的表: create table your_table (

我有一个包含两列的配置单元表。员工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的分区


如何实现这一点。

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

  • 创建按薪资范围划分的表:

    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;
    

  • 非常感谢。我尝试了上述方法,效果良好。