Spark中如何获取RDD流水线中的全部数据?
获取RDD全部数据的方法
要提取RDD中的所有数据,直接使用collect()方法即可,代码如下:
print(data.collect())
不过要注意:collect()会把RDD的所有数据从集群的各个节点拉取到Driver节点的内存中。如果你的数据量达到数千行甚至更多,一定要确认Driver节点有足够的内存来容纳这些数据,不然很容易出现内存溢出(OutOfMemoryError)的问题。
如果数据量实在太大,不建议一次性拉取全部数据到本地,而是可以考虑:
- 用
saveAsTextFile()直接将RDD数据写入文件系统,避免内存压力 - 分批次处理数据,比如结合
foreach()或者mapPartitions()在集群端处理,而不是拉到Driver
内容的提问来源于stack exchange,提问作者JulietteN
相关产品推荐
相关产品推荐

