Pig对于数据倾斜Join的优化原理
1、对数据抽样
2、根据样本数据,估计出某个key的所有的记录数以及所占的总内存,pig.skewedjoin.reduce.memusage 控制reduce消耗内存比例,再计算出某个key所需要的reduce个数,以及reduce的总数。
3、将结果存一个文件中,相当于索引文件,格式为:(swpv,0,3), (swps,4,5)(说明:<join key>,<min index of reducer>, <max index ofreducer>)
4、自定义Patitioner,读取索引,并将key平均分配到reduce上。比如:(swpv,0,3)将swpv平均分配到 编号为0-3的reduce中。
Hadoop Pig进阶语法