我需要同时处理多个月的数据。因此,是否可以将多个文件夹指向外部表?
例如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不会负载可能)