1.map join无reduce操作,所以没有shuffle。这样可以减少大量的网络I/O。(如:大表文件数500、文件250M,小表20M。map join的网络I/O共50020M,Common join的网络I/O共500250M+20M),同时不需要进行map sort和shuffle sort排序。
2.由于Common join的一个reduce包含两张表的数据,所以进行reduce的join先将一张表的数据加载到内存后才能跟另外一张表的数据join,如果加载的是大表需要reduce大量的内存。
3.由于小表转换为HashTable结构,map join在对数据进行join很快,哈希算法的时间为O(1)。
4.map join需要将小表加载DistributeCache是存在Driver内,大表map从Driver拉取小表数据。所以小表数据量不宜过大。