RDD创建有哪几种方法?
通过并行化集合的方式(本地集合转分布式集合)
或者读取数据的方式创建(TextFile\WholeTextFile)
2. RDD分区数如何查看?
通过 getNumPartitions API 查看, 返回值Int
3. Transformation 和Action的区别?
转换算子的返回值100%是RDD, 而Action算子的返回值100%不是RDD.
转换算子是懒加载的,只有遇到Action才会执行. Action就是转换算子处理链条的开关.
4.哪两个Action算 子不经过 Driver,直接输出?
foreach和saveAsTextFile直接由Executor执行后输出
不会将结果发送到Driver上去reduceByKey 和 groupByKey的区别?
reduceByKey自带聚合逻辑, groupByKey不带
如果做数据聚合reduceByKey的效率更好,因为可以先聚合后shuffle再最终聚合,传输的IO小
6.mapPartitions和foreachPartition的区别?
mapPartitions 带有返回值 foreachPartition不带
7.对于分区操作有什么需要注意的地方。
尽量不要增加分区, 可能破坏内存迭代的计算管道
groupByKey和reduceByKey的区别
在功能上的区别:
groupByKey仅仅有分组功能而已
reduceByKey除了有ByKey的分组功能外,还有reduce聚合功能,所以是一个分组+聚合一体化的算子
如果对数据执行分组+聚合,那么使用这2个算子的性能差别是很大的

reduceByKey由于自带聚合逻辑,所以可以完成:
1.先在分区内做预聚合
2.然后再走分组流程(shuffle)
3.分组后再做最终聚合
