Hadoop 按日期划分的配置单元--一次处理多个日期?

Hadoop 按日期划分的配置单元--一次处理多个日期?,hadoop,hive,hadoop-partitioning,Hadoop,Hive,Hadoop Partitioning,我可能在理解蜂巢分区方面有差距。我有一个按日期划分的外部表。我通过对托管配置单元表的查询生成拼花地板文件。我当前运行了一个bash脚本,以按日期递增地进行处理(该日期被提供给查询)。有没有更好的方法来处理多个日期 表的创建方式如下: set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict; CREATE EXTERNAL TABLE my_table (id int, produc

我可能在理解蜂巢分区方面有差距。我有一个按日期划分的外部表。我通过对托管配置单元表的查询生成拼花地板文件。我当前运行了一个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';

所以这是可行的,但它只是一天一次地做这件事,似乎效率不高。有更好的方法吗?

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

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;

更多信息。

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

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;
更多关于