1)Map-side Join
Map-side Join使用场景是一个大表和一个小表的连接操作,其中,“小表”是指文件足够小,可以加载到内存中。该算法可以将join算子执行在Map端,无需经历shuffle和reduce等阶段,因此效率非常高。
2)Reduce-side Join
当两个文件/目录中的数据非常大,难以将某一个存放到内存中时,Reduce-side Join是一种解决思路。该算法需要通过Map和Reduce两个阶段完成,在Map阶段,将key相同的记录划分给同一个Reduce Task(需标记每条记录的来源,便于在Reduce阶段合并),在Reduce阶段,对key相同的进行合并。
df广播使用方法,网友blog
//www.greatytc.com/p/2c7689294a73
rdd 广播
val arr = rdd.collect
val broadcatRes = sc.broadcast(arr) //数据字典广播
在用的时候
rdd.map(t =>
val index = binarySearch(broadcastRes.value,t)
val info = broadcastRes.value(index)
info
)