我知道與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