我有一个包含 4 列的表,其中 col4 作为 Hive 中的分区列。这是一个巨大的表,每 5 小时插入约 900 万行。我有一个限制,我不能更改此表的设计,因为它也用于其他报告。
CREATE EXTERNAL TABLE testdb.table1(col1 string, col2 int, col3 int)
PARTITIONED BY (col4 string)
ROW FORMAT DELIMITED
STORED AS TEXTFILE
LOCATION '/path/to/input/';
对于其中一个用例,我正在尝试创建一个查找表来识别 col4 中每个值的一些数据点,例如
select col1, col4 from testdb.table1 group by col1, col4;
问题:
对分区列执行 Group By 会影响性能吗?Col4 在这种情况下。
当我在 col4 上进行 Group By 时,它仍然是全表扫描吗?
在具有最少全表扫描的分区列上创建查找的最佳方法是什么?
我遇到了这篇文章,但它是给 Impala 的。我不确定 Impala 和 Hive 是否在内部使用相同的 MR 引擎进行数据处理。因此,将此作为一个新问题发布。