Spark面试题(二)

本文深入探讨了Spark中reduceByKey、foldByKey、aggregateByKey和combineByKey的区别,详细介绍了引起Shuffle过程的算子及其功能,如reduceByKey、groupByKey等。此外,还讨论了如何在涉及数据库操作时减少Spark的数据库连接数,以及Spark Shuffle的默认并行度和控制reduce缓存的策略。

reduceByKey、foldByKey、aggregateByKey、combineByKey区别

算子初始值逻辑
reduceByKey没有初始值分区内和分区间逻辑相同
foldByKey有初始值分区内和分区间逻辑相同
aggregateByKey有初始值分区内和分区间逻辑可以不同
combineByKey初始值可以变换结构分区内和分区间逻辑可以不同

请列举会引起Shuffle过程的Spark算子,并简述功能

  1. reduceByKey:可以将数据按照相同的Key对Value进行聚合
  2. groupByKey:可以将数据按照相同的key对Value进行分组
  3. aggregateByKey :可以将数据根据不同的规则进行分区内计算和分区间计算,有初始值。
  4. foldByKey:当分区内规则和分区间规则相同时,aggregateByKey可以简化为foldByKey。
  5. combineByKey:有初始值的聚集函数,允许返回值类型与输入类型不一致。
  6. sortByKey:在一个(K,V)的RDD上调用,K必须实现Ordered接口(特质),返回一个按照key进行排序的RDD。
  7. join:在类型为(K,V)和(K,W)的RDD上调用,返回一个相同的key对应的所有元素连接在一起的(K,(V,W))的RDD。
  8. leftOutJoin:类似于 SQL 语句的左外连接
  9. 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值