不同的数据类型关联的数据倾斜

lymnna71  于 2021-06-29  发布在  Hive
关注(0)|答案(1)|浏览(301)

今天我读了一篇关于Hive调整的文章。一段如下:
场景:user\u id在user表中的字段user\u id int、log table字段均为string type int。当两个表按照user\u id进行连接操作时,默认的哈希操作将分配int id,这将导致所有记录的string type id都分配给一个reducer。
解决方案:将数值类型转换为字符串类型

select * from users a 
left outer join logs b 
on a.usr_id = cast (b. user_id as string)

有谁能给我解释一下以上的观点,我真的不明白作者所说的话。为什么“这将导致字符串类型id的所有记录都分配给一个reducer”呢?提前谢谢!

2exbekwf

2exbekwf1#

对于初学者来说,你没有正确地复制粘贴/转录原文。以下是更可能的措辞:
这将导致字符串类型id的所有记录都分配给一个reducer。
发生这种情况的原因是字符串到int的转换没有 cast 可能会把它变成0。因此,散列将把所有的id放入0值的同一个分区中。

相关问题