我正在配置单元中进行连接操作。但是当 reducer 达到 99% 时,reducer 卡住了。
然后我发现表中有倾斜数据。 前任。表 A 中有 100 万条数据,表 B 中只有 10k。在表 A 中,连接列有 80% 的值相同,其余为其他。因此 Hive reducer 停留在该值。
这是我的查询:
INSERT INTO TABLE xyz SELECT m.name, m.country, m.user_type, m.category FROM A m JOIN category n ON (m.name = n.name) where country=2 GROUP BY m.name, m.country, m.user_type, m.category;
所以请提出可能的解决方案。我如何处理这种数据的连接操作。
最佳答案
从 Hive 0.10.0 开始,可以将表创建为倾斜或更改为倾斜(在这种情况下,在 ALTER 语句之后创建的分区将倾斜)。此外,倾斜表可以通过指定 STORED AS DIRECTORIES 选项来使用列表分桶功能。有关详细信息,请参阅 DDL 文档:Create Table , Skewed Tables , 和 Alter Table Skewed or Stored as Directories
引用使用此 link .
关于hadoop - 如何使用 Hive 处理倾斜数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36147699/