首页 > 解决方案 > pyspark 的输出不会显示在 s3 存储桶中

问题描述

AWS 新手,我正在尝试在 EMR 集群上运行 pyspark 作业,但我似乎无法弄清楚为什么我的输出不会保存到指定的 s3 存储桶中。

from pyspark import SparkContext

if __name__ == "__main__":
    sc = SparkContext(appName="appName")
    rdd = sc.parallelize([1,2,3,4,5])
    rdd.saveAsTextFile("s3a://ouput-bucket/output")
    sc.stop()

我用脚本提交作业

#!bin/bash
aws s3 cp $2 s3://bucket-with-script/script.py 

aws emr add-steps --cluster-id $1 \
--steps Type=spark,Name=appName,\
Args=[--deploy-mode,cluster,--master,yarn,\
--verbose,\
--conf,spark.yarn.submit.waitAppCompletion=False,\
--num-executors,5,\
--executor-cores,5,\
--executor-memory,2g,\
s3a://bucket-with-script/script.py,\]\
,ActionOnFailure=CONTINUE

有什么我做错了吗?

标准错误: https ://paste.ee/p/OwSOj

编辑:我不知道这是否会改变任何东西,但我正在通过 ec2 实例完成所有这些工作。

标签: amazon-web-servicespysparkamazon-emr

解决方案


尝试保存一个级别,例如 s3a://bucket/dest/out.csv

该根目录总是有一些“异常”,因为它很特别:它总是在那里,即使你删除它,等等。


推荐阅读