我需要同时处理多个月的数据。因此,是否可以将多个文件夹指向外部表?
例如Create external table logdata(col1 string, col2 string........) location s3://logdata/april, s3://logdata/march

最佳答案

简单的答案:不,在创建过程中,Hive location表的external必须是唯一的,Metastore需要使用它来了解表的位置。

话虽这么说,您可能可以摆脱使用分区的麻烦:您可以为每个分区指定一个location,这似乎是您最终想要的分区,因为按月划分。

因此,像这样创建表:

create external table logdata(col1 string, col2 string) partitioned by (month string) location 's3://logdata'

然后您可以添加如下分区:
alter table logdata add partition(month='april') location 's3://logdata/april'

您每个月都要这样做一次,现在您可以查询表,指定所需的分区,并且Hive只会查看您实际需要数据的目录(例如,如果您仅处理4月和6月,Hive不会负载可能)

10-06 07:06