gpt4 book ai didi

java - 如何在不使用collect函数的情况下有效地将rdd转换为list

转载 作者:行者123 更新时间:2023-12-02 20:33:48 25 4
gpt4 key购买 nike

我们知道,如果我们需要将 RDD 转换为列表,那么我们应该使用 collect()。但是这个函数给驱动程序带来了很大的压力(因为它将来自不同执行程序的所有数据带到驱动程序),这会导致性能下降或更糟(整个应用程序可能会失败)。

有没有其他方法可以在不使用 collect() 或 collectAsMap() 等不会导致性能下降的情况下将 RDD 转换为任何 java util 集合?

基本上在当前我们在批处理或流数据处理中处理大量数据的场景中,collect() 和 collectAsMap() 之类的 API 在具有真实数据量的实际项目中变得完全无用。我们可以在演示代码中使用它,但这就是用于这些 API 的全部内容。那么为什么要有一个我们甚至不能使用的 API(或者我错过了什么)。

是否有更好的方法可以通过其他方法实现相同的结果,或者我们可以以更有效的方式实现 collect() 和 collectAsMap(),而不是只调用
List<String> myList= RDD.collect.toList (影响性能)

我查了一下谷歌,但找不到任何有效的东西。如果有人有更好的方法,请提供帮助。

最佳答案

Is there any other way to convert RDD into any of the java util collection without using collect() or collectAsMap() etc which does not cause performance degrade?



不,也不可能。如果有这样的方法, collect将首先使用它来实现。

好吧,从技术上讲,您可以实现 List RDD 之上的接口(interface)(或大部分?),但这不是一个好主意,而且毫无意义。

So why to have an API which we can not even use (Or am I missing something).


collect旨在用于只有大 RDD 作为输入或中间结果,并且输出足够小的情况。如果这不是您的情况,请使用 foreach或其他操作。

关于java - 如何在不使用collect函数的情况下有效地将rdd转换为list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52099730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com