我试图更好地理解大数据编程,但我对 python 几乎一无所知。所以我使用 mapreduce 范例,实际上在 python 中我处理存储在某个目录中的一些文本文件mydir
,所以我的数据源是:
global_file = glob.glob("mydir/*")
def file_contents(file_name):
f = open(file_name)
try:
return f.read()
finally:
f.close()
datasource = dict((file_name, file_contents(file_name)) for file_name in global_file)
那么我的mapreduce函数是
#each line in each text file is structured as follow : paper-id:::author1::author2::…. ::authorN:::title
def mapfn(k, v):
for w in v.splitlines():
separator = w.split('\:\:|\:\:\:')
for x in separator[1:len(separator)-1]:
for y in separator[-1].split():
yield x + y, 1
首先,k
andv
代表一个键值对,其中k
是文件的 id v
,是后一个文件的内容。(最后我想获得按作者分组的每个单词的出现次数)
现在的问题是,当我运行算法时,我得到一个空白数组结果。我的 python 语法正确吗?