【问题标题】:Outputting billions of lines from Spark从 Spark 输出数十亿行
【发布时间】:2016-05-12 21:40:28
【问题描述】:

我正在尝试使用 PySpark 将具有约 5,000,000 行的 RDD 作为文本文件输出。这需要很长时间,那么有什么技巧可以让.saveAsTextFile() 更快?

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

【问题讨论】:

  • 您能否告诉我们需要多长时间,在什么样的集群和作业配置上?行有多大?
  • 您是否将其保存到HDFS

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-04-08
    • 2020-04-26
    • 2011-10-15
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 2011-06-25
    • 2010-09-26
    相关资源
    最近更新 更多