一次查询2
用df计算sql,写入hive表,用相同的聚合处理3类不同的distinct(因为一次只算一个distinct可以利用shuffle的分发,提高速度,对大数据量的处理,比如20亿条数据distinct,大概只能一次distinct一个值了。)发现对于数据量较小的第二,第三块处理时间较快,对较多的groupping sets产生数据也较少,而对第一个有20亿条需要处理的部分则输入50G,产生2Tgroupping后的数据,之后在再次聚合的时候应该发生了倾斜。问题在于:对于同样的输入,为什么一开始input就大小不一样?shuffle write输出了什么,为什么50G输入会输出2T数据?如果第一部分聚合好,第二部分不应该倾斜,原因是什么?
倾斜情况观察
输入输出让我不能理解的地方
另外当聚合的group维度上升到7维时,执行第一阶段任务大批量失败,应该是executor的内存满了,报错是can not find address;后来降了一维为减轻倾斜的维度后第一阶段正常运行,但是第二阶段倾斜如上所述。