Насколько небольшой должна быть операция ParDo для хорошей производительности и масштабирования работы луча? - PullRequest
1 голос
/ 26 мая 2020

В конвейере потока данных есть несколько небольших фильтров, которые я хочу применить к потоку данных (функции ParDo).

Операции фильтрации не требуют интенсивного использования ЦП. Для повышения производительности и масштабирования следует ли мне использовать все фильтры в одном ParDo или в каждом ParDo для каждой операции фильтра (код очистки)?

1 Ответ

2 голосов
/ 28 мая 2020

Если бегун, который вы используете, поддерживает слияние, и вы применяете фильтры непосредственно друг за другом без комбайнера / GBK, тогда ваш код будет выполнен в рамках одного слитого шага.

Из документации Javadocs Beam SDK:

Оптимизация

Балочные бегуны могут применить оптимизацию к конвейеру, прежде чем он будет выполнен. Ключевая оптимизация, слияние, относится к операциям ParDo. Если одна операция ParDo создает коллекцию PCollection, которая затем используется в качестве основного ввода для другой операции ParDo, две операции ParDo будут объединены в одну операцию ParDo и выполняются за один проход; это «слияние производителя и потребителя».

Я бы порекомендовал использовать более чистый код и позволить раннеру оптимизировать выполнение.

...