ビッグデータ プログラミングを理解しようとしていますが、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
andはファイルの ID ansが後者のファイルの内容でv
あるキーと値のペアを表します。(最後に、著者ごとにグループ化された各単語の出現数を取得したい)k
v
問題は、アルゴを実行すると、空の配列結果が得られることです。私のpython構文は正しいですか?