Google Cloud Dataproc OOM问题

时间:2019-02-11 20:48:54

标签: python google-cloud-platform google-cloud-dataproc

在Spark集群(Dataproc)上执行代码时,我遇到了OOM问题。

环境: 2节点群集,每个节点具有6G内存。 测试文件大小为20Gb。

这是我的代码:

from __future__ import absolute_import
import pyspark

sc = pyspark.SparkContext()
sc._jsc.hadoopConfiguration().set('fs.sftp.impl', 'org.apache.hadoop.fs.sftp.SFTPFileSystem')

data = sc.textFile("sftp://user:pass@54.23.12.100/data/tmp/test_tile.csv.gz")
data.saveAsTextFile("gs://data/tmp")

是否可以使用Spark集群将数据流式传输到GCS并为工作程序节点设置节流(缓冲区)以避免OOM错误?或者,如果还有其他解决方案可以从外部源(sftp)读取数据并将其持久保存到GCS中?

2 个答案:

答案 0 :(得分:4)

使用Hadoop DistCp代替Spark将文件从SFTP服务器复制到GCS更合适。

此处是有关如何在Hadoop中配置SFTP支持的说明: https://stackoverflow.com/a/33878054/3227693

答案 1 :(得分:3)

对于外部解决方案,您可以尝试使用rclone,它可以将数据从sftp同步到GCS。或者只是从sftp下载,然后使用gstuil复制到GCS。

最好是直接从gcs读取spark数据。

您仍然想从Spark中的sftp读取文件,您可能需要尝试使用它 Spark SFTP Connector Library