我们有一个分区在几个键上的配置单元表。我们可以调用这些键country, state, city
进行说明。我们使用以下命令向该表添加新分区:
ALTER TABLE tbl ADD PARTITION("us", "wa", "seattle") LOCATION "hdfs://root_path/us/wa/city=seattle"
这对我们来说变得不可扩展了,因为(country, state, city)
的每个组合都发出了上述命令。例如,假设每个键可以采用100个不同的值,因此我们总共有100 * 100 * 100 = 1e6组合,并且必须发出如上所述的1e6 SQL命令。
在表创建期间没有办法在1个SQL命令中告诉hive,请查看目录hdfs://root_path/{country}/{state}/city={city}
以获取与(country, state, city)
对应的数据。例如,获取(canada, bc, vancouver)
的数据只需查看hdfs://root_path/canada/bc/city=vancouver
答案 0 :(得分:0)
检查配置单元动态分区Hive dynamic partition inserts
在动态分区插入中,用户可以进行部分分区 规范,这意味着只需指定分区列表 PARTITION子句中的列名。
如果你有一个基于文件的表。这将有效。
INSERT OVERWRITE TABLE tbl PARTITION (country, state, city)
SELECT
other1, other2, ... -- set another columns first
country, state, city -- columns for partition are last
FROM source_table WHERE ...