mrjob:无效的引导操作路径,必须是Amazon S3中的一个位置

时间:2014-04-22 07:24:34

标签: python amazon-emr mrjob

我在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

它产生

enter image description here

根据建议这是一个与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)

我不明白的是,即使在更新的代码之后我仍然会收到错误,而且我不确定如何继续使用此错误。

2 个答案:

答案 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)

我遇到了类似的问题,发现我的问题是我已经在我的工作中包含了各种文件中的代码和文件路径。如果是这种情况,也会发生错误。