您可以使用 alter table 语句来更改位置。在下面的示例中,分区基于数据存储在时间相关文件位置的日期。如果我想搜索很多天,我必须为每个位置添加一个 alter table 语句。这个想法可能很好地扩展到您的情况。您创建一个脚本以使用其他一些技术(例如 python)生成如下创建表语句。
CREATE EXTERNAL TABLE foo (
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\073'
LINES TERMINATED BY '\n'
;
alter table foo add partition (date='20160201') location /user/data/CSV/20160201/data;
alter table foo add partition (date='20160202') location /user/data/CSV/20160202/data;
alter table foo add partition (date='20160203') location /user/data/CSV/20160203/data;
alter table foo add partition (date='20160204') location /user/data/CSV/20160204/data;
您可以使用定义位置所需的任意数量的添加和删除语句。然后,您的表可以找到保存在 HDFS 中多个位置的数据,而不是将所有文件都放在一个位置。
您还可以利用
create table like
陈述。像在另一个表中一样创建模式。然后更改表格以指向您想要的文件。
我知道这不完全是你想要的,更多的是一种解决方法。祝你好运!