我正在配置单元中运行下面的代码,试图连接字段“word”上的两个表。这需要很长时间,我想知道我能做些什么来加速它。在一个表中,“word”字段混合了大写和小写字母,而在另一个表中则全部是大写字母。
Code:
set hive.exec.compress.output=false;
set hive.mapred.mode=nonstrict;
DROP TABLE IF EXISTS newTable;
CREATE TABLE newTable AS
SELECT
bh.inkey,
bh.prid,
bh.hname,
bh.ptype,
bh.band,
bh.sles,
bh.num_ducts,
urg.R_NM
from table1 AS bh
INNER JOIN table2 AS urg
ON LOWER(bh.word)=LOWER(urg.word);
2条答案
按热度按时间ddrv8njm1#
我会在table1的基础上创建一个temp表,单词是大写的。然后不使用任何字符串函数将这个表连接到table2,因为table2.word都是大写的。除了表1和表2一样大之外,字符串函数lower也会导致查询的缓慢。
oprakyz72#
我曾经遇到过一个问题,我的连接条件太复杂,而hive最终只使用了一个reducer来计算它。这里可能是一样的,因为
LOWER
转变。你能检查一下Hive使用了多少减速器吗?你可以用cte来做
LOWER
作为前一步,并有一个简单的连接条件: