1.Map和MapPartition的区别,foreach和foreachPartition的区别
前者对应的函数一次只计算1条数据,后者一次计算一个分区的数据
使用场景:
前者适于内存有限、分区数据量又特别大的环境。
后者适用内存足够,分区数据量可接受的环境。
优先选择后者,批处理效率更高。
MapPartition是transformation算子,懒加载,有返回值,foreachPartition是action算子无返回值
一般用MapPartition做转换,用foreachPartition做结果输出。
2.reduceByKey(_+_)和groupByKey()的区别
前者:按key聚合,shuffle前有预聚合操作,该算子需要传参,传一个函数
后者:按key分组,直接shuffle,该算子不需要传参,在后面接算子
都是用于spark持久化,cache=persist(only_memery)
persist还可以设置为持久化到磁盘,两者不会切断rdd上下游依赖,且程序运行结束时,会自动释放存储。
checkpoint需要先指定持久化的目录,会切断rdd上下游依赖,程序运行结束后,不会释放存储。
-
checkpo