提问人:user22814211 提问时间:10/28/2023 最后编辑:philipxyuser22814211 更新时间:10/29/2023 访问量:18
Hive 左联接与包含数字的字符串不匹配
Hive Mismatching Left Join with String Containing Numbers
问:
任务:
我正在对两个大型 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 |
答: 暂无答案
评论