java – Spark toLocalIterator和迭代器方法之间的区别
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spark toLocalIterator和迭代器方法之间的区别,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1205字,纯文字阅读大概需要2分钟。
内容图文
![java – Spark toLocalIterator和迭代器方法之间的区别](/upload/InfoBanner/zyjiaocheng/734/cacf24911d60404aa85d5c98e00376e1.jpg)
在编写Spark程序时,我遇到了这个toLocalIterator()方法.正如早些时候我只使用iterator()方法.
如果有人曾经使用过这种方法,请扔一些灯.
我在Spark程序中使用foreach和foreachPartition方法时遇到过.
我可以将foreach方法结果传递给toLocalIterator方法或反之亦然.
toLocalIterator() -> foreachPartition()
iterator() -> foreach()
解决方法:
首先,不应该调用RDD中的迭代器方法.正如您可以在[Javadocs](https://spark.apache.org/docs/1.0.2/api/java/org/apache/spark/rdd/RDD.html#iterator(org.apache.spark.Partition,org.apache.spark.TaskContext)中读到的那样:这应该由用户直接调用,但可用于RDD自定义子类的实现者.
对于toLocalIterator,它用于将分散在集群周围的RDD中的数据收集到一个唯一的节点(运行程序的节点),并对同一节点中的所有数据执行某些操作.它类似于collect方法,但它不会返回List,而是返回一个Iterator.
foreach用于将函数应用于RDD的每个元素,而foreachPartition用于将函数应用于每个分区.在第一种方法中,您一次获得一个元素(并行化更多),在第二种方法中,您获得整个分区(如果需要对所有数据执行操作).
所以,是的,在使用foreach或foreachPartition将函数应用于RDD之后,您可以调用toLocalIterator来获取包含RDD所有内容的迭代器并对其进行处理.但是,请记住,如果您的RDD非常大,您可能会遇到内存问题.如果要在执行所需的操作后再次将其转换为RDD,请使用SparkContext再次并行化它.
内容总结
以上是互联网集市为您收集整理的java – Spark toLocalIterator和迭代器方法之间的区别全部内容,希望文章能够帮你解决java – Spark toLocalIterator和迭代器方法之间的区别所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。