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

smtd7mpg  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(315)

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

所以这是可行的,但是一天只做一次,这似乎不是很有效。有更好的办法吗?

8e2ybdfx

8e2ybdfx1#

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

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;

更多关于hive中动态分区的信息。

相关问题