12

我在 Windows 7 上。我安装了 mrjob,当我从网站运行示例 word_count 文件时,它在本地机器上运行良好。但是,尝试在 Amazon EMR 上运行它时出现错误。我什至测试了只用 boto 连接到 amazon 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)

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

4

2 回答 2

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

于 2014-05-09T12:31:12.430 回答
1

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

于 2014-06-02T18:17:01.260 回答