У меня есть два отдельных конвейера: «P1» и «P2». В соответствии с моим требованием мне нужно запускать P2 только после того, как P1 полностью завершит свое выполнение. Мне нужно выполнить всю эту операцию с помощью одного шаблона.
Обычно шаблон создается в тот момент, когда он находит run () на своем пути, скажем, p1.run ().
Итак, я вижу, что мне нужно обрабатывать два разных конвейера с использованием двух разных шаблонов, но это не удовлетворяет моему требованию к выполнению конвейера на основе строгого порядка.
Другой способ, который я мог бы придумать, - вызвать p1.run () внутри ParDo p2.run () и оставить run () p2 ждать до завершения run () из p1. Я пробовал этот способ, но застрял на IllegalArgumentException, указанном ниже.
java.io.NotSerializableException: объекты PipelineOptions не сериализуемы и не должны встраиваться в преобразования (вы захватили объект PipelineOptions в поле или в анонимном классе?). Вместо этого, если вы используете DoFn, обращайтесь к PipelineOptions во время выполнения через ProcessContext / StartBundleContext / FinishBundleContext.getPipelineOptions () или предварительно извлеките необходимые поля из PipelineOptions во время создания конвейера.
Возможно ли вообще вызвать run () конвейера внутри любого преобразования, скажем «Pardo» другого конвейера?
Если это так, то как удовлетворить мое требование о последовательном вызове двух разных конвейеров путем создания одного шаблона?