【发布时间】:2018-02-24 04:56:29
【问题描述】:
我们知道,如果我们需要将 RDD 转换为列表,那么我们应该使用 collect()。但是这个函数给驱动程序带来了很大的压力(因为它将来自不同执行程序的所有数据带到驱动程序),这会导致性能下降或更糟(整个应用程序可能会失败)。
有没有其他方法可以在不使用 collect() 或 collectAsMap() 等而不会导致性能下降的情况下将 RDD 转换为任何 java util 集合?
基本上在当前我们在批处理或流数据处理中处理大量数据的场景中,collect() 和 collectAsMap() 等 API 在具有真实数据量的实际项目中变得完全无用。我们可以在演示代码中使用它,但这就是用于这些 API 的全部内容。那么为什么要有一个我们甚至不能使用的 API(或者我错过了什么)。
有没有更好的方法可以通过其他方法达到相同的结果,或者我们可以用比调用更有效的方式实现 collect() 和 collectAsMap()
List<String> myList= RDD.collect.toList(影响性能)
我查看了谷歌,但找不到任何有效的东西。如果有人有更好的方法,请提供帮助。
【问题讨论】:
标签: java scala apache-spark spark-streaming