mrjob InstanceProfile是创建集群所必需的

时间:2015-04-19 07:42:40

标签: python amazon-ec2 emr mrjob

我尝试使用python MRJob在Amazon EC2上运行实例 这是一个简单的python脚本,用于查找txt文件中最常用的单词

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

我收到以下错误:

<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文件需要修改?但我不知道怎么做?

1 个答案:

答案 0 :(得分:0)

如果您使用AWS IAM配置AWS权限,则可以使用iam_job_flow_role MRJob选项为作业指定IAM配置文件。有关详细信息,请参阅iam_job_flow_role。在默认情况下,需要mrjob.conf中的以下行

iam-job-flow-role: EMRDefaultRole