我尝试使用PySpark输出一个包含约5,000,000行的RDD作为文本文件。这花了很长时间,那么有关如何更快地.saveAsTextFile()
的一些提示呢?
每行有3列,我保存到HDFS。
答案 0 :(得分:1)
不知道长时间有多长,或者知道每一行的大小或群集的大小,我只能做几个猜测。
首先,一般来说,Spark会为每个分区输出一个文件。如果您的RDD是单个(或几个)分区,则输出到HDFS或GCS似乎很慢。在输出之前考虑重新分区(重新分区也需要时间,如果您可以将重新分区工作到管道中,以便它可以更好地完成有用的工作)。您始终可以调用RDD#getNumPartitions来查看RDD中有多少分区,并在需要时智能地进行修复。
我能想到的第二种可能性是,您的HDFS可能在配置不足(例如,空间不足)或导致错误导致的错误。我希望驱动程序可以看到任何HDFS写入错误,但可能在容器日志中。