我在Spark群集中有一个RDD。在客户端,我调用collect(),然后从收集的数据创建一个java流,并从此流创建一个CSV文件。
当我在RDD上调用collect()时,我将所有数据都带到客户端的内存中,这是我试图避免的。有没有办法从Spark集群中获取RDD作为流?
我要求不要将创建CSV的逻辑带到Spark集群并将其保留在客户端。
我正在使用独立群集和Java API。
答案 0 :(得分:0)
我不是专家,但我想我明白你在问什么。如果可以,请发布一些代码以帮助改善它。
目前有些操作基于每个分区,但我不知道这是否会让你回家,请参阅此问题的第一个答案的 toLocalIterator :{{3 }}
您可以使用第二个参数来控制分区数(我相信每个节点)并行化,“切片”但是没有很好地记录。非常确定如果您在Spark编程指南中搜索分区,您将会有一个好主意。
Spark: Best practice for retrieving big data from RDD to local machine