spark foreachPartition foreach

本文对比了Spark中foreach与foreachPartition两种操作的区别,并详细解释了foreachPartition如何通过减少数据库连接的创建和销毁来提高数据处理性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.foreach

    val list = new ArrayBuffer()
    myRdd.foreach(record => {
      list += record
    })

2.foreachPartition

    val list = new ArrayBuffer
    rdd.foreachPartition(it => {
      It.foreach(r => {
        list += r
      })
    })

说明:

foreachPartition属于算子操作,可以提高模型效率。比如在使用foreach时,将RDD中所有数据写Mongo中,就会一条数据一条数据地写,每次函数调用可能就会创建一个数据库连接,此时就势必会频繁地创建和销毁数据库连接,性能是非常低下;但是如果用foreachPartitions算子一次性处理一个partition的数据,那么对于每个partition,只要创建一个数据库连接即可,然后执行批量插入操作,此时性能是比较高的。

参考官网的说明:

https://spark.apache.org/docs/latest/streaming-programming-guide.html

 

转载于:https://www.cnblogs.com/shaozhiqi/p/11599748.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值