PyDoop documentation中有很多例子说明如何从shell运行PyDoop脚本,但我需要在python系统中的函数内运行pydoop任务。
以下是功能示例:
def mrb2(inp, out):
class CountMapper(api.Mapper):
def map(self, context):
context.emit(context.value.split()[0], 1)
class CheckReducer(api.Reducer):
def reduce(self, context):
context.emit(context.key, sum(context.values))
pipes.run_task(api.Factory(CountMapper, CheckReducer), istream=inp, ostream=out)
inp
和out
打开纯文本文件:
with open('input.txt') as inp, open('output.txt', 'w') as out:
...
但是当我尝试跑步时,我得到一个错误:
pipes.run_task(api.Factory(CountMapper, CheckReducer), istream=inp, ostream=out)
TypeError: object() takes no parameters
我做错了什么?
P.S。从api
导入的模块pipes
,pydoop.mapreduce
。