gpt4 book ai didi

Python 和 AWS EMR 步骤 : Using os. 系统运行 chmod 等命令在作为 EMR 步骤运行时不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 04:30:01 27 4
gpt4 key购买 nike

我的团队在 AWS 中工作,我们有 python 脚本,可以将文件从 S3 存储桶移动到 EC2 实例。我想用我们正在使用的脚本作为序言,它在直接从 ec2 实例运行时有效,并且仅在作为 EMR 步骤运行时发出。 (尝试自动化)这里有一些代码片段可以手动工作,但不能按步骤定义。

1: 创建记录器

import os, sys, boto3
import logging, datetime
import Configuration as cfg

# setup logger for this module
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
formatter = logging.Formatter(cfg.logFormatterStr)
logFileName = os.path.splitext(os.path.basename(__file__))[0] + '_' + \
datetime.datetime.now().strftime('%Y%m%d_%H%M%S.log')
file_handler = logging.FileHandler(logFileName)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)

2:我们下载对象。

for pre in prefixes:
for obj in SB.objects.filter(Prefix=pre):
if '.' in obj.key:
temp = obj.key.split('/')
objList.append((obj.key,temp[-1]))
for item in objList:
SB.download_file(item[0],os.getenv("HOME") + '/' + item[1])
logger.info('Downloaded - %s' % item[0])
objList[:] = []

3: 然后我们尝试使用 os.system 执行 chmod 命令以及 mkdir 和 mv

os.system('chmod 775 *.py')

# Move HQL files to a subfolder
os.system('mkdir -p hive')
os.system('mv -f *.hql hive')

第 2 步有效。文件被下载到 ec2 实例。由于某种原因,日志文件从未被写入或创建。我们得到所有 os.system 命令的错误。

chmod: cannot access ‘*.py’: No such file or directory
mv: cannot stat ‘*.hql’: No such file or directory

(我们非常确定 *.hql 和 *.py 周围的不寻常字符是亚马逊记录报价的一些问题。

最佳答案

我的一名团队成员设法排除故障并找到了错误的原因。他在下面对其他人的陈述:

我的脚本位于/home/hadoop 下。当我将该脚本作为 EMR 步骤运行时(使用/home/hadoop 中文件位置的参数),该脚本在不同的目录下运行(/mnt/var/lib/hadoop/steps/{ unique-step-ID }).由于运行的脚本正在寻找/home/hadoop 下的文件,因此找不到它并且似乎是权限问题。

关于Python 和 AWS EMR 步骤 : Using os. 系统运行 chmod 等命令在作为 EMR 步骤运行时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52842153/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com