如何将整个rdd构建成一个元素?

时间:2017-03-02 05:47:04

标签: scala apache-spark

我喜欢这个

A,1335952933,1
A,1335953754,0
A,1335994294,1
A,1335995228,0
B,1336001513,1
B,1336002622,0
B,1336006905,1
B,1336007462,0


rdd.first
A,1335952933,1

当我得到rdd.first它显示A,1335952933,1但是我希望将整个rdd作为一个单独的元素,用这样的逗号分隔

rdd.first
 A,1335952933,1,A,1335953754,0,A,1335994294,1,A,1335995228,0,B,1336001513,1,B,1336002622,0,
B,1336007462,0

我可以使用collect和mkString scala来做但我听说收集在大型数据集中不是一个好的解决方案有没有其他方法可以使用rdd操作?

2 个答案:

答案 0 :(得分:0)

  

但我希望将整个rdd作为一个元素

出于这个原因,不建议使用

collect。 collect将RDD集合的整个数据传输到驱动程序应用程序(在单个计算机上运行),这对于大型数据集是不可能的,因为您将遇到内存不足异常。所以如果你真的想要这个,你可以走collectmkString的路线,避免在大型RDD上使用它。

答案 1 :(得分:0)

建议不要使用

collect,因为它会导致整个数据集被传递给驱动程序。但是你的情况仍然需要转移它,所以collect& mkString在这里。