【问题标题】:Hive Partitioned by Date -- Processing multiple dates at a time?Hive 按日期分区——一次处理多个日期?
【发布时间】:2020-07-09 16:32:28
【问题描述】:

我可能在理解 hive 分区方面存在差距。我有一个按日期分区的外部表。我正在通过对托管配置单元表的查询来生成镶木地板文件。我目前运行一个 bash 脚本以按日期递增处理(提供给查询)。有没有更好的方法来处理多个日期?

表格是这样创建的:

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

CREATE EXTERNAL TABLE my_table (id int, product string)
PARTITIONED BY (dt string)
LOCATION '/path/to/location'

我的 bash 脚本本质上是通过以下方式迭代日期和插入数据:

INSERT OVERWRITE TABLE my_table (dt='2020-07-09')
SELECT id, product FROM managed_table WHERE dt = '2020-07-09';

所以这行得通,但它只是一天做一次,似乎效率不高。有没有更好的办法?

【问题讨论】:

    标签: hadoop hive hadoop-partitioning


    【解决方案1】:

    您正在使用静态分区插入记录。为了做动态分区, 在插入数据时,您可以如下定义动态分区。您还需要设置配置单元动态分区规则。这是启用动态分区所必需的。

    set hive.exec.dynamic.partition=true;
    set hive.exec.dynamic.partition.mode=nonstrict;
    
    INSERT OVERWRITE INTO TABLE my_table PARTITION(dt)
    SELECT 
     id, 
     product,
     dt
    FROM managed_table;
    

    更多关于dynamic partition in hive

    【讨论】:

      猜你喜欢
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 2017-08-19
      • 2022-11-18
      • 2015-10-21
      • 2016-07-07
      相关资源
      最近更新 更多