reduceByKey、foldByKey、aggregateByKey、combineByKey区别
| 算子 | 初始值 | 逻辑 |
|---|---|---|
| reduceByKey | 没有初始值 | 分区内和分区间逻辑相同 |
| foldByKey | 有初始值 | 分区内和分区间逻辑相同 |
| aggregateByKey | 有初始值 | 分区内和分区间逻辑可以不同 |
| combineByKey | 初始值可以变换结构 | 分区内和分区间逻辑可以不同 |
请列举会引起Shuffle过程的Spark算子,并简述功能
- reduceByKey:可以将数据按照相同的Key对Value进行聚合
- groupByKey:可以将数据按照相同的key对Value进行分组
- aggregateByKey :可以将数据根据不同的规则进行分区内计算和分区间计算,有初始值。
- foldByKey:当分区内规则和分区间规则相同时,aggregateByKey可以简化为foldByKey。
- combineByKey:有初始值的聚集函数,允许返回值类型与输入类型不一致。
- sortByKey:在一个(K,V)的RDD上调用,K必须实现Ordered接口(特质),返回一个按照key进行排序的RDD。
- join:在类型为(K,V)和(K,W)的RDD上调用,返回一个相同的key对应的所有元素连接在一起的(K,(V,W))的RDD。
- leftOutJoin:类似于 SQL 语句的左外连接
- cogroup:在类型为(K,V)和(K,W)的 RDD 上调用,返回一个(K,(Iterable,Iterable))类型的 RDD
当Spark涉及到数据库操作时,如何减少Spark中的数据库连接数
使用foreachPartition代替foreach,在foreachPartition内获取数据库连接
Spark Shuffle默认并行度
参数spark.sql.shuffle.partitions决定默认并行度为200
控制Spark reduce缓存 调用shuffle
spark.reducer.maxSizeInFlight
本文深入探讨了Spark中reduceByKey、foldByKey、aggregateByKey和combineByKey的区别,详细介绍了引起Shuffle过程的算子及其功能,如reduceByKey、groupByKey等。此外,还讨论了如何在涉及数据库操作时减少Spark的数据库连接数,以及Spark Shuffle的默认并行度和控制reduce缓存的策略。
1497

被折叠的 条评论
为什么被折叠?



