Я создал следующий код:Mincemeat.py - DataSource разделение файлов
#!/usr/bin/env python
import mincemeat
import glob
all_files = glob.glob('textfiles/*.txt')
def file_contents(file_name):
f = open(file_name)
try:
return f.read()
finally:
f.close()
# The data source can be any dictionary-like object
datasource = dict((file_name, file_contents(file_name))
for file_name in all_files)
def mapfn(k, v):
for w in v.split():
yield w, 1
def reducefn(k, vs):
result = sum(vs)
return result
s = mincemeat.Server()
s.datasource = datasource
s.mapfn = mapfn
s.reducefn = reducefn
results = s.run_server(password="changeme")
print results
Я бегу это на моем личном макинтош и работает клиент на той же машине. Однако, мой вопрос заключается в том, что если я запускаю несколько клиентов на нескольких компьютерах, будут ли файлы разделены автоматически? Я имею в виду, будет ли сервер mincemeat присваивать файлы клиентам для обработки? Кроме того, в приведенном выше примере я не указываю ключ в функции mapper. Как указать ключ, например. имя файла?
Спасибо, Майкл за ваш ответ. Что касается ключевого вопроса, на самом деле я хотел знать, что как в mapfn я могу назначить имя файла параметру k. Короче, как mincemeat знает, что k - это имя файла, а v - строка в файле. Мы нигде не указали его. Благодарю. –