我正在尝试使用python MRJob在亚马逊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文件?但我不知道该怎么做?
发布于 2015-04-20 18:10:21
如果您使用AWS IAM配置AWS权限,您可以使用iam_job_flow_role MRJob选项为作业指定IAM配置文件。有关更多详细信息,请参阅iam_job_flow_role。在默认情况下,这将需要mrjob.conf中的以下行
iam-job-flow-role: EMRDefaultRolehttps://stackoverflow.com/questions/29727165
复制相似问题