PipeLine с множество трансформации

Опитвам се да разбера жизнения цикъл на трансформациите в конвейер.

Имам конвейерна линия с няколко трансформации.

Pipeline p = Pipeline.create(options);
p.apply(TextIO.Read.named("ReadLines").from(inputFile))
            .apply(new ReadData())
            .apply(new Match())
            .apply(new Record())
            .apply(BigQueryIO.Write
                    .to(tableRef)
                    .withSchema(getSchema())
                    .withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED)
                    .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE));

Във всяка от тези трансформации има един DoFn. Трябва ли целият пакет, който възелът обработва, да бъде завършен, преди да преминете към следващата трансформация?

Това, което наблюдавам поне при DirectPipelineRunner, е, че целият набор от данни се чете, преди да се изпълни трансформацията на съвпадението.


person Jeffrey Ellin    schedule 12.05.2015    source източник


Отговори (1)


С DirectPipelineRunner трансформациите се изпълняват изцяло серийно, както забелязахте. Когато работите с DataflowPipelineRunner без набор --streaming, много трансформации могат да бъдат обединени и всички ще се изпълняват едновременно. С --streaming данните непрекъснато ще се предават през целия тръбопровод и всички трансформации ще бъдат активни.

person danielm    schedule 12.05.2015
comment
Можете ли да изясните едновременно, когато използвате DataflowPIpelineRunner? - person Jeffrey Ellin; 12.05.2015
comment
Ако две трансформации са слети, втората ще обработва всеки изходен елемент на първата веднага щом първата го произведе. - person danielm; 12.05.2015