Google cloud dataflow 获取PCollection中的所有元素,而不考虑标记

Google cloud dataflow 获取PCollection中的所有元素,而不考虑标记,google-cloud-dataflow,apache-beam,Google Cloud Dataflow,Apache Beam,我有一个BigQuery TableRow元素的PCollection,这些元素根据TableRow的一列是否被成功解析而被标记 final TupleTag<TableRow> OK = new TupleTag<TableRow>(){}; final TupleTag<TableRow> NOTOK = new TupleTag<TableRow>(){}; 我找不到办法。我看到有一个名为myPCollection.getAll()的方法,

我有一个BigQuery TableRow元素的PCollection,这些元素根据TableRow的一列是否被成功解析而被标记

final TupleTag<TableRow> OK = new TupleTag<TableRow>(){};
final TupleTag<TableRow> NOTOK = new TupleTag<TableRow>(){};
我找不到办法。我看到有一个名为myPCollection.getAll()的方法,但它返回的不是一个PCollection,而是一个Map,PCollection>


关于如何获取整个元素集的任何想法,无论它们是如何标记的?

您可以使用
展平
转换()将不同的PCollection合并为一个:

PCollection-okResults=myPCollection.get(确定);
PCollection notOkResults=myPCollection.get(NOTOK);
PCollectionList pcl=PCollectionList.empty(p);
pcl=pcl.和(okResults)和(notOkResults);
PCollection allResults=pcl.apply(flatte.pCollections());
在这种情况下,
allResults
将包含两个
OK
NOTOK
元素。我用两个输入行做了一个示例(完整代码),其中它们被分为好的或坏的输出端:

2020年2月1日10:42:24 PM org.apache.beam.examples.AllSideOutputs$5 processElement
信息:所有元素:错误行
2020年2月1日10:42:24 PM org.apache.beam.examples.AllSideOutputs$5 processElement
信息:所有元素:好线
2020年2月1日10:42:24 PM org.apache.beam.examples.AllSideOutputs$3 processElement
信息:Ok元素:好线
2020年2月1日10:42:24 PM org.apache.beam.examples.AllSideOutputs$4 processElement
信息:不正常元素:错误行
使用2.17.0 SDK和
DirectRunner
进行测试

myPCollection.get(NOTOK)