我在 hive 里做联合行动。但当减速器达到99%时,减速器就卡住了。
然后我发现表中有倾斜数据。例如,在表a中有100万个数据,而表b只有10k。在表a中,连接列有80%的值是相同的,其余的是其他的。所以Hive减缩器停留在这个值。
我的问题是:
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;
所以请提出可能的解决方案。如何处理此类数据的联接操作。
3条答案
按热度按时间7cjasjjr1#
从hive0.10.0开始,可以将表创建为倾斜的或更改为倾斜的(在这种情况下,在alter语句之后创建的分区将被倾斜)。另外,倾斜表可以通过指定“存储为目录”选项来使用列表bucketing特性。有关详细信息,请参阅ddl文档:create table、skewed tables和alter table skewed或存储为目录
请使用此链接作为参考。
oknrviil2#
您可以尝试mapjoin,如下所示:
ohtdti5x3#
找到了解决上述问题的方法。
在执行配置单元联接之前,将以下参数设置为配置单元。
很少有参数需要根据数据大小和集群大小进行更改。