我正在 hive 中尝试在下面的代码中尝试在字段“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);
最佳答案
我将基于table1用大写单词创建一个临时表。然后将这个表连接到table2而不使用任何字符串函数,因为table2.word都是大写的。除了table1和table2较大以外,较低的字符串函数还会导致查询速度变慢。
DROP TABLE IF EXISTS tmpTable;
CREATE TABLE tmpTable AS
SELECT bh.word,
bh.inkey,
bh.prid,
bh.hname,
bh.ptype,
bh.band,
bh.sles,
bh.num_ducts
from table1 AS bh;
DROP TABLE IF EXISTS newTable;
CREATE TABLE newTable AS
SELECT
tmp.inkey,
tmp.prid,
tmp.hname,
tmp.ptype,
tmp.band,
tmp.sles,
tmp.num_ducts,
urg.R_NM
from tmpTable AS tmp
INNER JOIN table2 AS urg
ON tmp.word=urg.word;