Impala如何支持分区的概念,如果它支持它,Hive分区和Impala分区之间有什么区别?
发布于 2016-07-01 10:53:01
默认情况下,表的所有数据文件都位于一个目录中。
分区是一种基于一个或多个列的值在加载期间对数据进行物理划分的技术,以加快测试这些列的查询速度。
例如,在一个年份列上分区了一个school_records表,每个不同的年份值都有一个单独的数据目录,并且该年的所有数据都存储在该目录中的一个数据文件中。如果查询包含WHERE条件,如YEAR=1966、IN IN( 1989、1999)或1984至1989年间的年份,则只能检查相应目录或目录中的数据文件,从而大大减少了需要读取和测试的数据量。
静态和动态分区
在SQL语句中指定所有分区列称为“静态分区”,因为该语句影响单个可预测分区。例如,对只影响一个分区的ALTER 语句或将所有值插入到同一个分区的INSERT语句使用静态分区:
插入t1分区(x=10,y='a'),从some_other_table中选择c1;
当您在 insert 语句中指定某些分区键列,但忽略这些值时,Impala将确定要插入该技术的分区称为“动态分区”。
插入t1分区(x,y='b'),从some_other_table中选择c1,c2;
如果需要,根据年、月和日变量创建新分区;插入单个值。
插入天气分区(年份、月、日),选择“多云”,2014,21;
必要时为指定的年份和月份创建新分区,但更改日期;插入单个值。
插入天气分区(year=2014,month=04,day),选择“晴天”,22;
在分区子句中指定的键列越多,在SELECT列表中所需的列就越少。选择列表中的尾随列被替换为没有指定值的分区键列。
您可以参考此链接进行进一步阅读。
希望这能帮上忙!
https://stackoverflow.com/questions/26484514
复制相似问题