map函数在emr中运行mapreduce时失败

zaq34kh6  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(473)

我在amazon emr上运行自己的map reduce任务。我看到Map任务失败了,我无法找出失败的Map任务的原因。

import fileinput
import csv

myDict = {}
csvreader = csv.reader(fileinput.input(mode='rb'), delimiter=',')
for newline in  csvreader:
    #newline =  line.split(',')
    if newline[6] not in myDict.keys():
        #print 'Zipcode: ' + row[6] + ' Hospital code: ' + row[1]
        myDict[newline[6]] = 1
    elif newline[6] in myDict.keys():
        #print 'value in row '+ str(myDict[row[6]])
        myDict[newline[6]] += 1

for key in myDict.keys():
    print '%s\t%s' % (str(key), str(myDict[key]))

Map任务是读取作为输入给定的csv文件,使用两列中的数据创建键、值对。reduce的任务是聚合并打印它们。
以下是在#时为maptask获得的stderr/usr/bin/env python没有添加到脚本的顶部。如果是adde,则d stderr为空,但maptask失败:

/mnt/var/lib/hadoop/tmp/nm-local-dir/usercache/hadoop/appcache/application_1417478068297_0008/container_1417478068297_0008_01_000005/./map_zip_hospi.py: line 1: import: command not found
/mnt/var/lib/hadoop/tmp/nm-local-dir/usercache/hadoop/appcache/application_1417478068297_0008/container_1417478068297_0008_01_000005/./map_zip_hospi.py: line 2: import: command not found
/mnt/var/lib/hadoop/tmp/nm-local-dir/usercache/hadoop/appcache/application_1417478068297_0008/container_1417478068297_0008_01_000005/./map_zip_hospi.py: line 3: myDict: command not found
/mnt/var/lib/hadoop/tmp/nm-local-dir/usercache/hadoop/appcache/application_1417478068297_0008/container_1417478068297_0008_01_000005/./map_zip_hospi.py: line 4: syntax error near unexpected token `('
/mnt/var/lib/hadoop/tmp/nm-local-dir/usercache/hadoop/appcache/application_1417478068297_0008/container_1417478068297_0008_01_000005/./map_zip_hospi.py: line 4: `csvreader = csv.reader(fileinput.input(), delimiter=',')

'
我可以从控制台看到map任务失败了。有人能帮我找出代码中的错误吗?

balp4ylt

balp4ylt1#

我错过了一件非常琐碎的事情,我也看到了这个错误是由许多人犯下的。下面应该是python脚本的第一行。


# !/usr/bin/env python

相关问题