从Spark输出数十亿行

时间:2016-05-12 21:40:28

标签: hadoop apache-spark google-cloud-storage pyspark google-cloud-dataproc

我尝试使用PySpark输出一个包含约5,000,000行的RDD作为文本文件。这花了很长时间,那么有关如何更快地.saveAsTextFile()的一些提示呢?

每行有3列,我保存到HDFS。

1 个答案:

答案 0 :(得分:1)

不知道长时间有多长,或者知道每一行的大小或群集的大小,我只能做几个猜测。

首先,一般来说,Spark会为每个分区输出一个文件。如果您的RDD是单个(或几个)分区,则输出到HDFS或GCS似乎很慢。在输出之前考虑重新分区(重新分区也需要时间,如果您可以将重新分区工作到管道中,以便它可以更好地完成有用的工作)。您始终可以调用RDD#getNumPartitions来查看RDD中有多少分区,并在需要时智能地进行修复。

我能想到的第二种可能性是,您的HDFS可能在配置不足(例如,空间不足)或导致错误导致的错误。我希望驱动程序可以看到任何HDFS写入错误,但可能在容器日志中。

相关问题