Как бегун Beam определяет размер каждого пакета PCollection - PullRequest
1 голос
/ 31 марта 2019

Согласно Модель исполнения луча Apache - связывание и постоянство :

"Вместо одновременной обработки всех элементов элементы в PCollection обрабатываются в связках. Деление сборника на связки производится произвольно и выбирается бегуном. Это позволяет бегуну выбрать подходящее промежуточное звено между сохранением результатов после каждого элемента и необходимостью повторять все в случае сбоя. Например, потоковый бегун может предпочесть обработку и фиксацию небольших пакетов, а пакетный бегун может предпочесть обработку больших пакетов. "

В этом параграфе предполагается, что размер пачки произвольный и определяется бегуном. Я проверил исходный код Apache Beam и заглянул в модуль Runner, чтобы выяснить, как бегуны определяют размер пакета. Однако я не могу понять это.

Может ли кто-нибудь указать, в каких java-классах или конфигурационных файлах рассчитывается размер пакетов? Меня интересует, как это работает для DirectRunner и Cloud Dataflow Runner.

1 Ответ

1 голос
/ 02 апреля 2019

Как правило, это не предназначенная для установки ручка, и фактически это не доступная ручка в открытом исходном коде жгута проводов потока данных / луча SDK. Бегуны делают выбор при упаковке пакета, основываясь на предпочтениях / целях бегуна для запуска конвейера с высокой производительностью.

В потоке данных некоторые бэкэнд-системы с закрытым исходным кодом определяют это на основе множества факторов, включая разделение, объем данных, доступных для ключа конкретного участника, и прогресс / пропускную способность конвейера. Размер самого пакета не основан на каких-либо статических числах, но выбирается динамически в зависимости от того, что в данный момент происходит внутри конвейера / рабочих.

...