2015-04-19 42 views
0

我试图使用python MRJob 这里是简单的Python脚本找到一个txt文件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() 

这是最常用的词来运行在Amazon EC2实例一我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文件需要修改:

我使用该命令还创建实例配置文件?但我不知道如何?

回答

0

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

iam-job-flow-role: EMRDefaultRole