2015-04-19 3 views
0

Я пытаюсь запустить экземпляр на Amazon EC2 с помощью питона MRJob Вот простой питон скрипт, чтобы найти наиболее часто используемые слова в текстовом файлеmrjob InstanceProfile требуется для создания кластера

from mrjob.job import MRJob 

class MRWordFrequencyCount(MRJob): 
    def mapper(self, _, line): 
     yield "chars", len(line) 
     yield "words", len(line.split()) 
     yield "lines", 1 

    def reducer(self, key, values): 
     yield key, sum(values) 


if __name__ == '__main__': 
MRWordFrequencyCount.run() 

Вот мой файл mrjob.conf:

runners: 
    emr: 
    aws_access_key_id: XXXXXXXXXXXXXXXXXX 
    aws_secret_access_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
    aws_region: us-west-1 
    ec2_key_pair: EMR 
    ec2_key_pair_file: ~/EMR.pem # ~/ and $ENV_VARS allowed here 
    ssh_tunnel_to_job_tracker: true 

При запуске сценария:

python MRMostUsedWord.py -r emr romeo.txt > most_used_word.out 

I получите следующую ошибку:

<Error> 
<Type>Sender</Type> 
<Code>ValidationError</Code> 
<Message>InstanceProfile is required for creating cluster</Message> 
</Error> 
<RequestId>4d1a1e3b-e665-11e4-b9e1-a557982e1081</RequestId> 
</ErrorResponse> 

У вас есть идеи, почему я получаю эту ошибку?

Я также создание профилей экземпляра с помощью команды:

aws emr create-default-roles 

Может нужен mrjob.conf файл должен быть изменен? Но я не знаю, как это сделать?

ответ

0

Если вы используете AWS IAM для настройки разрешений AWS, вы можете указать профиль IAM для задания с помощью опции iam_job_flow_role MRJob. См. iam_job_flow_role для более подробной информации. В случае по умолчанию, который потребует следующую строку в mrjob.conf

iam-job-flow-role: EMRDefaultRole 

 Смежные вопросы

  • Нет связанных вопросов^_^