【发布时间】:2018-04-20 23:08:56
【问题描述】:
我正在使用 HDP 2.6.2 和 hive。
我有一种情况,我正在根据一个列从一个大表中更新一个分区表,而查询却表现不佳,我不明白为什么。下面的插入语句就是一个例子
insert into partitioned_table partition(dt_month)
select * from large_table
where incremental_string_col > (select last_incremental_col from temp_tab)
这里我假设,where 子句中的子查询被执行一次,结果被缓存,或者整个 temp_tab 表(基本上只有一行)被 CBO 运送到所有节点,但它似乎并不像将字符串值作为文字放入!
我可以明确声明需要在 hive 中缓存表吗? 我可以明确声明一个查询只需要执行一次并缓存结果吗? 我在这里错过了什么?
我理解 where 中的列不是最好的情况,但我无能为力。
任何帮助将不胜感激!
【问题讨论】:
-
我也不能使用 mapjoin,因为我记得不支持 hive 连接中的不等式。
标签: optimization hive cbo