Hive 左联接与包含数字的字符串不匹配

Hive Mismatching Left Join with String Containing Numbers

提问人:user22814211 提问时间:10/28/2023 最后编辑:philipxyuser22814211 更新时间:10/29/2023 访问量:18

问:

任务:
我正在对两个大型 Hive 表(每个表> 50MM 记录)进行左联接。加入键是一个 17 位字符串,仅包含数字。

问题:
当我进行联接时,它的行为就好像它只在前 16 个字符上联接一样。

尝试的解决方案:
如果我在末尾添加一个字母字符,联接会按预期发生,但如果可以避免的话,我宁愿不要在这么大的数据集上这样做。

select l.col1 as l_col1  
    , r.col1 as r_col1
    , l.initial_val as initial_val
    , r.val1 as val1
from lefty as l
left join
(select col1
   , distinct val1 as val1
 from righty) r
on l.col1=r.col1

左撇子

科尔1 initial_val
'2028061498720060' 一个
'2028061498720061' B
'2028061498720063' C

对了

科尔1 val1
'2028061498720060' 47
'2028061498720061' 28
'2028061498720063' 20
'2028061498720063' 20

预期

l_col1 r_col1 initial_val val1
'20280614198720060' '2028061498720060' 一个 47
'20280614198720061' '2028061498720061' B 28
'20280614198720063' '2028061498720063' C 20

实际

l_col1 r_col1 initial_val val1
'20280614198720060' '2028061498720060' 一个 47
'20280614198720060' '2028061498720061' 一个 28
'20280614198720060' '2028061498720063' 一个 20
'20280614198720060' '2028061498720060' B 47
'20280614198720061' '2028061498720061' B 28
'20280614198720063' '2028061498720063' B 20
'20280614198720060' '2028061498720060' C 47
'20280614198720061' '2028061498720061' C 28
'20280614198720063' '2028061498720063' C 20
Hive 左联接

评论


答: 暂无答案