我正在尝试使用带有绑定PCollections(https://cloud.google.com/dataflow/model/windowing)的窗口实现从一个BigQuery表转换为另一个BigQuery表的数据。
我的数据流包已成功完成。但是我想知道如何验证是否已使用Windowing转换了数据。我也想知道我是否使用Windowing遵循正确的方法处理有界数据。
这是我的高级步骤和代码段。
PCollection stampedLogs = mainData.apply(ParDo.of(new DoFn(){ @ProcessElement 公共无效processElement(ProcessContext c){ 即时时间戳=新的Instant(新的Date()); c.outputWithTimestamp(c.element(),timestamp); } }));
PCollection fixedWindowedItems = stampedLogs.apply(Window.into(FixedWindows.of(Duration.standardMinutes(1))));
WithKeys keyCustomerTable = WithKeys.of((TableRow 行)-> String.format(“%s#%s#%s”,row.get(“ partyID”),row.get(“ accountNumber”),row.get(“ customerName”)))。withKeyType(TypeDescriptors.strings( ));
PCollection> pcGroupedCollection = fixedWindowedItems.apply(“ WithKeys”,keyCustomerTable);
最终的TupleTag table1Tag =新的TupleTag <>();
PCollection> targetTableGrouped = KeyedPCollectionTuple.of(table1Tag, pcGroupedCollection).apply(CoGroupByKey.create());
fixedWindowedItems.apply(BigQueryIO.writeTableRows() .withSchema(schema1) .to(options.getTable()) .withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED) .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE));