RDD之foreach和foreachPartition方法

当我们创建一个RDD,并且执行map操作的时候,会生成一个新的RDD。
在这里插入图片描述
而当我们不想要生成新的RDD时,我们要使用foreach或者foreachPartition方法

foreach

在这里插入图片描述
当执行完foreach,发现并没有打印出来结果。

这个foreach方法是一个Action方法,而且任务执行的时候是在executor端执行的,所以它会将结果打印到executor端。详细解释请看博客:https://blog.csdn.net/weixin_43866709/article/details/88666080

然后我们通过UI界面可以在worker节点上(executor端)查看到打印的结果:
在这里插入图片描述

在这里插入图片描述

foreachPartition

这个方法操作的是一个分区。
在这里插入图片描述
执行完之后,同样可以在UI界面查看到结果:
在这里插入图片描述

总结

foreach 是一条一条的拿数据进行处理
foreachPartition是一个分区一个分区的拿数据,一个分区中有很多数据的信息。

所以,在使用中,当我们要把处理结果保存到数据库中的时候,我们要使用foreachPartition这个方法,这样效率会更高。
2.通过上面的例子也说明了,foreach和foreachPartition这两个方法执行完之后不会将结果收集到driver端。
而collect,top,count这些方法是会把结果收集到driver端的。

猜你喜欢

转载自blog.csdn.net/weixin_43866709/article/details/88667288