【发布时间】:2016-12-15 18:25:33
【问题描述】:
我已经运行了以下 PySpark 代码:
from pyspark import SparkContext
sc = SparkContext()
data = sc.textFile('gs://bucket-name/input_blob_path')
sorted_data = data.sortBy(lambda x: sort_criteria(x))
sorted_data.saveAsTextFile(
'gs://bucket-name/output_blob_path',
compressionCodecClass="org.apache.hadoop.io.compress.GzipCodec"
)
作业成功完成。但是,在作业执行期间,Spark 在以下路径 gs://bucket-name/output_blob_path/_temporary/0/ 中创建了许多临时 blob。我意识到最后删除所有这些临时 blob 占用了一半的作业执行时间,而这段时间内 CPU 利用率为 1%(极大浪费资源)。
有没有办法将临时文件存储在本地驱动器(或 HDFS)而不是 GCP 上?我仍然希望将最终结果(排序数据集)保存到 GCP。
我们使用具有 10 个工作节点的 Dataproc Spark 集群(VM 类型 16 核,60GM)。输入数据量为10TB。
【问题讨论】:
标签: apache-spark pyspark google-cloud-dataproc