Impala 如何支持分区?

sqougxex  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(421)

Impala 是如何支持分区的概念的?如果支持的话,Hive分区和 Impala 分区有什么区别?

uajslkp6

uajslkp61#

默认情况下,表的所有数据文件都位于一个目录中。
分区是一种在加载过程中根据一列或多列的值对数据进行物理划分的技术,以加速测试这些列的查询。
例如,对于按年份列划分的school\u records表,每个不同的年份值都有一个单独的数据目录,该年份的所有数据都存储在该目录中的数据文件中。包含where条件(如year=1966、year in(19891999)或year between 1984和1989)的查询只能检查相应目录中的数据文件,从而大大减少了要读取和测试的数据量。
静态和动态分区
在sql语句中指定所有分区列称为“静态分区”,因为该语句影响单个可预测分区。例如,将静态分区与仅影响一个分区的alter table语句一起使用,或与将所有值插入同一分区的insert语句一起使用:
insert into t1 partition(x=10,y='a')从其他表中选择c1;
当您在insert语句中指定一些分区键列,但忽略这些值时,impala将确定要插入哪个分区此技术称为“动态分区”:
insert into t1 partition(x,y='b')从其他表中选择c1,c2;
如果需要,根据变量年、月、日创建新分区;插入单个值。
插入天气分区(年、月、日)选择“多云”,2014,4,21;
如果需要,为指定的年和月创建新分区,但日期可变;插入单个值。
插入天气分区(年=2014,月=04,日)选择“晴天”,22;
在partition子句中指定的键列越多,select列表中需要的列就越少。选择列表中的尾随列按顺序替换没有指定值的分区键列。
你可以参考这个链接进一步阅读。
希望有帮助!

相关问题