spark foreachPartition foreach

mac2022-06-30  17

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

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)