Google bigquery 如何将PCollection传输到普通列表
在执行Bigquery处理后,我有一个作为管道结果的PCollection,现在我想使用与管道分离的部分数据。如何将PCollection传输到列表,以便迭代并使用内容Google bigquery 如何将PCollection传输到普通列表,google-bigquery,google-cloud-storage,google-cloud-dataflow,Google Bigquery,Google Cloud Storage,Google Cloud Dataflow,在执行Bigquery处理后,我有一个作为管道结果的PCollection,现在我想使用与管道分离的部分数据。如何将PCollection传输到列表,以便迭代并使用内容 我在概念上做错了什么吗?一旦您完成了数据流管道中的数据处理,您可能会希望将数据写入持久性存储,例如云存储(GCS)中的文件、BigQuery中的表等 然后,您可以使用数据流之外的数据,例如,将其读入列表。显然,它需要适合于特定操作的内存。我要做的是创建“侧输出”(side outputs)(),这是您与主流程一起创建的另一个PC
我在概念上做错了什么吗?一旦您完成了数据流管道中的数据处理,您可能会希望将数据写入持久性存储,例如云存储(GCS)中的文件、BigQuery中的表等
然后,您可以使用数据流之外的数据,例如,将其读入列表。显然,它需要适合于特定操作的内存。我要做的是创建“侧输出”(side outputs)(),这是您与主流程一起创建的另一个PCollection,因此最终您将有2个PCollection作为BQ流程的结果 只需确保在流程函数上创建一个条件,将元素添加到侧面输出集合。大概是这样的:
public final void processElement(final ProcessContext context) throws Exception {
context.output(bqProcessResult);
if (condition) {
context.sideOutput(myFilterTag, bqProcessResult);
}
}
该过程的结果不是PCollection,而是PCollectionTuple,因此您只需执行以下操作:
PCollectionTuple myTuples = previous process using the function above...;
PCollection<MyType> bqCollection = myTuples.get(bqTag);
PCollection<MyType> filteredCollection = myTuples.get(myFilterTag);
PCollectionTuple myTuples=使用上述函数的上一个进程。。。;
PCollection bqCollection=myTuples.get(bqTag);
PCollection filteredCollection=myTuples.get(myFilterTag);