Конвейер Apache Beam не работает после groupbykey () - PullRequest
0 голосов
/ 07 сентября 2018

Я выполняю GroupByKey в конвейере, ключи - это строки, а значения - словари. Я хочу сгруппировать их и сделать обработку на них. Я могу перейти к следующему шагу, если я удалю GroupByKey, но не с ним.

(parseout_interim | beam.Map(lambda row: (row['prefix'] + row['report_id'], row))
                                                # | beam.GroupByKey()
                                                | beam.ParDo(ParseSegmentsDoFn()).with_outputs(ParseSegmentsDoFn.OUTPUT_TAG_TRADELINE,
                                                                                              main = 'parseout'))

Если я прокомментирую GroupByKey, данные достигнут следующего шага.

Я что-то упустил полностью?

Кроме того, для sidenote - не рекомендуется ли раскручивать конвейер внутри ParDo? или это совершенно нормально? Если все в порядке, я бы ушел без использования groupbykey

1 Ответ

0 голосов
/ 08 сентября 2018

Как вы подразумеваете в своем комментарии, это должен быть потоковый конвейер.

Учтите, что потоковый конвейер непрерывно получает события.Когда вы хотите сгруппировать события в пределах этого конвейера, система должна знать, как долго она должна ожидать поступления событий, группируя их.Имеет ли это смысл?

Из-за этого вам нужно иметь стратегию управления окнами и запуска для вашего конвейера, иначе он будет ждать вечно, чтобы сгруппировать все элементы в потоке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...