Есть пара случаев, когда вы можете захотеть переставить ваши данные. Следующее не является исчерпывающим списком, но должно дать вам представление о том, почему вы можете переставлять:
Когда одно из ваших преобразований ParDo имеет очень большое разветвление
Это означает, что параллелизм увеличивается после вашего ParDo. Если вы не нарушите объединение, ваш конвейер не сможет разделить данные на несколько машин для их обработки.
Рассмотрим крайний случай DoFn, который генерирует миллион выходных элементов для каждого входного элемента. Учтите, что этот ParDo получает 10 элементов на входе. Если вы не нарушите слияние этого ParDo с большим разветвлением и его нисходящих преобразований, он сможет работать только на 10 машинах, хотя у вас будет миллионы элементов.
- Хороший способ диагностировать это - это посмотреть количество элементов во входной PCollection против количества элементов в выходной PCollection. Если последняя значительно больше первой, вы можете подумать о добавлении перестановки.
Когда ваши данные плохо сбалансированы по машинам **
Представьте, что ваш конвейер потребляет 9 файлов по 10 МБ и один файл по 10 ГБ. Если каждый файл читается на одной машине, у вас будет одна машина с намного большим количеством данных, чем другие.
Если вы не переставите эти данные, большинство ваших машин будут простаивать во время работы конвейера. Перестановка позволяет перебалансировать данные для более равномерной обработки на машинах.
- Хороший способ диагностировать это - посмотреть, сколько рабочих выполняет работу в вашем конвейере. Если конвейер идет медленно, и только один работник обрабатывает данные, вы можете воспользоваться перестановкой.