У меня есть требование, чтобы мой маппер мог в некоторых случаях создать новый ключ / значение для другого маппера для обработки.Есть ли вменяемый способ сделать это?Я думал написать свой собственный формат ввода (очередь?) Для достижения этой цели.Есть идеи?Спасибо!
РЕДАКТИРОВАТЬ: я должен уточнить
Метод 1
Map Step 1
(foo1, bar1) -> out1
(foo2, bar2) -> out2
(foo3, bar3) -> (fooA, barA), (fooB, barB)
(foo4, bar4) -> (fooC, barC)
Reduction Step 1:
(out1) -> ok
(out2) -> ok
((fooA, barA), (fooB, barB)) -> create Map Step 2
((fooC, barC)) -> also send this to Map Step 2
Map Step 2:
(fooA, barA) -> out3
(fooB, barB) -> (fooD, barD)
(fooC, barC) -> out4
Reduction Step 2:
(out3) -> ok
((fooD, barD)) -> create Map Step 3
(out4) -> ok
Map Step 3:
(fooD, barD) -> out5
Reduction Step 3:
(out5) -> ok
-- no more map steps. finished --
Так что это полностью рекурсивный.Некоторые ключи / значения генерируют выходные данные для уменьшения, некоторые генерируют новый ключ / значения для отображения.Я на самом деле не знаю, сколько шагов Map или Reduction я могу встретить на данном прогоне.
Метод 2
Map Step 1
(foo1, bar1) -> out1
(foo2, bar2) -> out2
(foo3, bar3) -> (fooA, barA), (fooB, barB)
(foo4, bar4) -> (fooC, barC)
(fooA, barA) -> out3
(fooB, barB) -> (fooD, barD)
(fooC, barC) -> out4
(fooD, barD) -> out5
Reduction Step 1:
(out1) -> ok
(out2) -> ok
(out3) -> ok
(out4) -> ok
(out5) -> ok
Этот метод заставит картографироватькормить свой собственный входной список.Я не уверен, какой способ будет проще реализовать.