У меня есть конвейер Cloud Dataflow, который выглядит следующим образом:
- Чтение из Cloud Bigtable
- Выполнение некоторых преобразований
- Запись в GCS
Изначально без установки максимального количества работников автоматическое масштабирование потока данных масштабировалось бы до максимального значения (1000 узлов) и создавало ОЧЕНЬ большое напряжение для нашего кластера Bigtable. Затем я определил несколько maxNumWorkers, чтобы сказать 100, и это нормально, и это не создает никакой сумасшедшей нагрузки на наш кластер Bigtable, и этап 1 обычно заканчивается быстро (чтение из Bigtable);но шаги 2 и 3 только с 100 узлами занимают значительно больше времени. Могу ли я в любом случае динамически изменить maxNumWorkers после первого этапа? Я вижу применение (Wait.on), но не знаю, как его использовать. Моя лучевая работа выглядит следующим образом:
pipeline
.apply("Read Bigtable",...)
.apply("Transform", ...)
.apply("Partition&Write", ...)
Я ищу способ ожидания .apply ("Read Bigtable", ...) длязакончите, затем увеличьте maxNumWorkers . По сути, мой первый этап связан с вводом-выводом, и мне не нужны ЦП (рабочие), но мои последующие этапы связаны с ЦП, и мне нужно больше ЦП (рабочих).