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

标签 hive hiveql hive-partitions hiveddl

我有一个带有 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 的分区。

我如何实现这一目标。

最佳答案

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

  • 创建按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;
    
  • 关于hive - 如何使用列的值范围对 Hive 表进行分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45398092/

    相关文章:

    hadoop - 通过 hive 错误定制 map 减少

    performance - Hive - 如何以最佳性能重用 Hive 中的子查询

    hadoop - Hive:在Hive SQL中转置的方法

    hadoop - 百分位数函数在 Hive 中如何工作?

    hive - 如何将一个分区的数据插入/复制到配置单元中的多个分区?

    python - 在 Python 中使用 subprocess.Popen 将 shell 命令输出重定向到文件不起作用

    apache-spark - Hive vs Spark Hash 函数产生不同的结果

    hadoop - 我需要一个 Hive 示例项目进行练习。如何处理大型数据库表?我们如何在 Hive 中实际实现查询?

    hadoop - 如何在不破坏同一路径下的另一个表的情况下,删除带有其基础文件结构的HIVE表?

    hadoop - Hive:为现有文件夹结构添加分区