Hive中的范围分区

时间:2014-10-20 13:08:27

标签: hadoop hive

hive是否支持范围分区?

我的意思是,hive支持以下内容:

insert overwrite table table2 PARTITION (employeeId BETWEEN 2001 and 3000) 
select employeeName FROM emp10 where employeeId BETWEEN 2001 and 3000;

table2& emp10有两列:

employeeName& EMPLOYEEID

当我运行上述查询时,我遇到了错误:

FAILED: ParseException line 1:56 mismatched input 'BETWEEN' expecting ) near 'employeeId' in destination specification

2 个答案:

答案 0 :(得分:2)

不可能。以下是Hive documentation的引用:

  

一个表可以有一个或多个分区列,并为分区列中每个不同的值组合创建一个单独的数据目录

答案 1 :(得分:1)

不可能。即使我使用单独的计算列,如

insert overwrite table table2 PARTITION (employeeId_range) select employeeName , employeeId/1000 FROM emp10 where employeeId BETWEEN 2000 and 2999;

将确保所有值都落在同一个分区中。 因为我们已经知道范围计算器,所以在查询表时,我们可以

select employeeName , employeeId FROM table2 where employeeId_range=2;

因此,我们也可以并行化给定范围的查询。 希望它有所帮助。