我在Windows 7上。我安装了mrjob,当我从网站运行example word_count file时,它在本地计算机上运行正常。但是,我在尝试在Amazon EMR上运行它时收到错误。我甚至用boto测试了与亚马逊s3的连接,它确实有用。
mrjob.conf文件
runners:
emr:
aws_access_key_id: xxxxxxxxxxxxx
aws_region: us-east-1
aws_secret_access_key: xxxxxxxx
ec2_key_pair: bzy
ec2_key_pair_file: C:\aa.pem
ec2_instance_type: m1.small
num_ec2_instances: 3
s3_log_uri: s3://myunique/
s3_scratch_uri: s3://myunique/
在我的cmd中运行以下内容
python word_count.py -c mrjob.conf -r emr mytext.txt
它产生
根据建议这是一个与Windows路径相关的问题,我仔细检查了源代码中的parse.py,它似乎有相关的检查来处理窗口文件类型
# Used to check if the candidate candidate uri is actually a local windows path.
WINPATH_RE = re.compile(r"^[aA-zZ]:\\")
def is_windows_path(uri):
"""Return True if *uri* is a windows path."""
if WINPATH_RE.match(uri):
return True
else:
return False
def is_uri(uri):
"""Return True if *uri* is any sort of URI."""
if is_windows_path(uri):
return False
return bool(urlparse(uri).scheme)
我不明白的是,即使在更新的代码之后我仍然会收到错误,而且我不确定如何继续使用此错误。
答案 0 :(得分:3)
您遇到的问题是由于Windows文件系统在其路径中使用转义字符\(反斜杠)。只需加倍,就不会有任何问题。
将mrjob.conf文件更改为:
runners:
emr:
aws_access_key_id: xxxxxxxxxxxxx
aws_region: us-east-1
aws_secret_access_key: xxxxxxxx
ec2_key_pair: bzy
ec2_key_pair_file: C:\\aa.pem
ec2_instance_type: m1.small
num_ec2_instances: 3
s3_log_uri: s3://myunique/
s3_scratch_uri: s3://myunique/
有关详细信息,请访问:http://yaml.org/spec/1.2/spec.html#id2770814
答案 1 :(得分:1)
我遇到了类似的问题,发现我的问题是我已经在我的工作中包含了各种文件中的代码和文件路径。如果是这种情况,也会发生错误。