Mrjob: Неверный путь действия начальной загрузки, должно быть местоположение в Amazon S3

Я на окнах 7. Я установил mrjob, и когда я запускаю пример файла word_count с веб-сайта, он отлично работает на локальном машина. Тем не менее, я получаю ошибку при попытке запустить ее на Amazon EMR. Я даже тестировал подключение к amazon s3 с помощью boto и работает.

Файл 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

После того, как вы указали, что это проблема, связанная с доступом к окну, я дважды проверил 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)

Я не понимаю, что я все еще получаю ошибку даже после обновленного кода, и я не уверен, как продвигаться вперед с этим.

Ответ 1

Проблемы, с которыми вы столкнулись, связаны с файловой системой Windows, использующей escape-символ\(обратная косая черта) в своем пути. Просто удвойте его, и у вас не должно быть больше проблем.

Измените файл 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

Ответ 2

У меня была аналогичная проблема, и я обнаружил, что моя проблема в том, что я включил код из разных файлов с файловыми путями внутри моей работы. Если это так, будет отмечена ошибка.