Как часть потока данных / Apache Beam, я хотел бы прочитать из источника, затем записать в источник, а затем снова прочитать из одного источника, а затем снова записать в этом порядке.Как я могу обеспечить порядок R-> W-> R-> W ниже?Я полагаю, что ниже работает как параллельный конвейер с R-> W.Я не уверен, что для этого нужно использовать объект PDone.
(В приведенном ниже примере рассмотрим, что BIGQUERYVIEWB - это представление Big Query, сформированное из TESTDATASET1.TABLE2 и нескольких других таблиц)
//Read 1
PCollection<TableRow> tr = pipeline.apply(BigQueryIO.readTableRows().fromQuery("SELECT ID FROM `TESTDATASET1.BIGQUERYVIEWA`").usingStandardSql());
PCollection<TableRow> tr1= tr.apply(ParDo.of(new SomeFn()));
//Write 1
tr1.apply(BigQueryIO.writeTableRows().withoutValidation()
.withSchema(FormatRemindersFn.getSchema())
.withWriteDisposition(WriteDisposition.WRITE_APPEND)
.to("TESTDATASET1.TABLE2"));
//Read 2
PCollection<TableRow> tr2 = pipeline.apply(BigQueryIO.readTableRows().fromQuery("SELECT ID FROM `TESTDATASET1.BIGQUERYVIEWB`").usingStandardSql());
PCollection<TableRow> tr3= tr.apply(ParDo.of(new SomeFn()));
//Write 2
tr3.apply(BigQueryIO.writeTableRows().withoutValidation()
.withSchema(FormatRemindersFn.getSchema())
.withWriteDisposition(WriteDisposition.WRITE_APPEND)
.to("TESTDATASET1.TABLE3"));