Python脚本无法在AWS上的集群部署模式下工作

时间:2020-01-06 00:43:33

标签: python amazon-web-services amazon-ec2

我有一个要在AWS EC2集群上运行的python脚本,该脚本具有以下代码:

df = ... make a dataframe
print(f'made dataframe')
df.to_csv('/homd/hadoop/my_file.csv')

但是,EC2群集默认情况下似乎将python设置为2.7而不是3.6(因此我不能使用fstrings)。 因此,我制作了另一个python脚本script_runner.py

import os
cmd = 'python3 /home/hadoop/original_script.py'
os.system(cmd)

因此,现在第二个脚本可以使用python 3运行第一个脚本。

我将两个脚本都放在了S3存储桶中,并且我将bootstrap .sh文件从s3同步到了群集。

现在我使用AWS CLI设置集群:

aws2 emr create-cluster --name "Spark cluster with step" \
--release-label emr-5.24.1 \
--applications Name=Spark \
--log-uri s3://log-bucket/logs/ \
--ec2-attributes KeyName=boris-aws-quant,EmrManagedMasterSecurityGroup=sg-...,EmrManagedSlaveSecurityGroup=sg-... \
--instance-type m5.xlarge \
--instance-count 1 \
--bootstrap-actions Path=s3://set-up/bootstrap_file.sh \
--steps Name="Command Runner",Jar="command-runner.jar",Args=["spark-submit","--deploy-mode=cluster","/home/hadoop/run_python_scripts.py"] \
--use-default-roles \
--no-auto-terminate

在纱线记录中出现错误

3.6.8 (default, Oct 14 2019, 21:22:53)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
Traceback (most recent call last):
  File "/home/hadoop/obtain_data.py", line 239, in <module>
    output_stock_df_to_csv(stock_df, output_directory)
  File "/home/hadoop/obtain_data.py", line 210, in output_stock_df_to_csv
    stock_df.to_csv(output_directory)
  File "/usr/local/lib64/python3.6/site-packages/pandas/core/generic.py", line 3228, in to_csv
    formatter.save()
  File "/usr/local/lib64/python3.6/site-packages/pandas/io/formats/csvs.py", line 183, in save
    compression=self.compression,
  File "/usr/local/lib64/python3.6/site-packages/pandas/io/common.py", line 399, in _get_handle
    f = open(path_or_buf, mode, encoding=encoding, newline="")
PermissionError: [Errno 13] Permission denied: '/home/hadoop/my_file.csv'

但是,如果我不使用“ --deploy-mode = cluster”,则代码将运行。我在做什么错了?

0 个答案:

没有答案
相关问题