gpt4 book ai didi

hadoop - Hive Table 添加分区加载所有子目录

转载 作者:可可西里 更新时间:2023-11-01 14:21:51 25 4
gpt4 key购买 nike

我正在使用配置单元(带有外部表)来处理存储在 amazon S3 上的数据。

我的数据分区如下:group/team/dt/(例如,数据文件可能存储在路径group=myGroup/team=myTeam/dt=20120603)

我想为多个团队(在不同的组中)处理数据。由于 RCOVER PARTITIONS 需要很长时间,我想将基于组和团队值的多个分区添加到配置单元表中(即,给定一个组和团队加载该团队中所有可用日期的数据)。

我正在寻找的功能是:

CREATE EXTERNAL TABLE myData(
attr1 string, attr2 string, attr3 string)
PARTITIONED BY (group string, team string, dt string )
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION 's3://myBucket/${DATA_ROOT_DIR}';

-- Add paritions without specifying values for dt
ALTER TABLE myData ADD PARTITION (group='group1',team='team1') ;
ALTER TABLE myData ADD PARTITION (group='group2',team='team2') ;

谢谢!

最佳答案

在您告知 Hive 之前,Hive 不知道这些目录,因此如果不添加它们就无法访问分区。

您可以编写一个简单的脚本来为给定的团队/组添加所有分区:

results = "ALTER TABLE something ADD "
groups.each do |group|
teams.each do |team|
partitions = listDirectories("s3n://bucket/", group, team)
partitions.each do |partition|
results += "PARTITION(group='#{group}', team='#{team}', dt='#{partition}')"
end

end
end

puts results

看起来您正在 EMR 上运行(常规配置单元甚至没有恢复分区),这几乎就是恢复分区所做的,但这样您至少可以拥有更多控制权。

另一种选择是在添加数据时添加分区,并确保所有分区保持最新。

关于hadoop - Hive Table 添加分区加载所有子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10996985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com