Я обнаружил два основных пробела в вашем понимании.
- Как мы можем контролировать количество рабочих в облачном потоке данных (то есть вы хотите создать 500 рабочих для вашего Calculate () DoFn ())?
Cloud Dataflow предлагает 2 алгоритма масштабирования.
a) На основе пропускной способности: в этом сервисе Dataflow автоматически выбирается соответствующее количество рабочих экземпляров, необходимых для выполнения вашего задания. Однако вы можете ограничить максимальное количество рабочих, которые он будет порождать, используя --max_num_workers.
Алгоритм на основе пропускной способности является настройкой по умолчанию для облачного потока данных.
b) Нет (--autoscaling_algorithm = NONE): здесь вы можете указать количество рабочих, которых вы хотите создать для своих заданий вручную. Вы можете указать количество рабочих, используя параметр --num_worker.
В вашем случае использования вы используете режим по умолчанию. Следовательно, вы получаете только 2 рабочих в зависимости от вашей нагрузки.
Прочтите эту ссылку для получения более подробной информации.
Что такое Splittable DoFn () и когда его использовать?
Рассмотрим следующие два варианта использования для чтения данных из источника:
- Чтение имена файлов из Kafka и читать каждый файл с помощью textIO (ограниченный источник)
- читать весь список разделов для kafka topi c и читать данные из каждого раздела (ограниченный источник)
Приведенные выше варианты использования очень сложно реализовать с помощью ParDo (читайте старый ParDO), потому что
функции ParDo монолитны c - единственный processElement () вызов, который может выводить только ограниченное количество элементов, но не предоставляет информацию о прогрессе или размере, принимает подсказки параллелизации, разделение или контрольную точку.
SDF - это DoFn с немонолитным c элементом обработка - при обработке одного элемента исполнитель может делать запросы к SDF, чтобы немонолитно выполнять работу, связанную с этим элементом, по нескольким, возможно, параллельным процессам. () вызывает
Итак, вы можете читать несколько текстовых файлов параллельно с Splittable DoFn для описанного выше варианта использования.
В дополнение к вышесказанному вы можете обратиться к этим двум документам для получения более подробной информации: SDFProposal , Dynami c балансировка
Теперь в вашем сценарии я не вижу необходимости в немонолитных c обработка. Здесь вы не добьетесь какого-либо дополнительного преимущества в производительности, используя SDF.