我知道与Key相关的所有值都发送给一个Reducer。减速器是否可以通过标准输入一次获得多个键?Reducer通过sys.stdin获取多个密钥?
我的用例是我将行分解为键值对,然后我想将与键关联的所有行发送到API。我看到,虽然多个密钥一次发送到API中。
这里是我的工作运行
映射
def main():
for line in sys.stdin
part1 = get_part1(line)
part2 = get_part2(line)
key = '%s - %s' % (part1, part2)
print '%s\t%s' % (key, line)
减速
def main():
my_module.sent_to_api(sys.stdin)
我推测你正在使用多个reducer,它们可以跨多个机器/核心同时运行,所以我认为完全有可能将多个密钥从各个reducer发送到API。 – Quetzalcoatl 2013-04-08 14:34:53
实际上,发生的事情是每个reducer都意味着将整个sys.stdin文件发送到API。当我通过API打开这个文件时,它包含多个键。将两个reducer插入到一个文件中是不可能的,所以我只能假定一个reducer已经将多个键放入了它的sys.stdin – Shane 2013-04-08 14:39:21
请记住,虽然所有与单个键相关的值都会发送到一个减速器,减速器可能不仅仅是一个关键。这会解释你所看到的情况吗? (请注意,如果使用默认分区程序以外的任何其他分区,可能不一定是这种情况。) – Quetzalcoatl 2013-04-08 14:45:22