gpt4 book ai didi

java - 多个表的 Pcollection

转载 作者:行者123 更新时间:2023-12-02 02:08:10 26 4
gpt4 key购买 nike

我有两个 bigquery 表。

表A

c_id    count_c_id  p_id

表B

id   c_name   p_type  c_id 

根据表 A 中的列,我需要使用 DF 管道从表 B 中查找详细信息。

PCollection<TableRow> tableRowBQ = pipeline.apply(BigQueryIO.Read
.named("Read").fromQuery("select c_id,count_c_id,p_id from TableA"));

我的要求基于此查询返回的 c_id,我应该能够使用 pcollection 从 TableB 获取 c_name。我无法找到任何用于从一个表迭代字段并使用该字段从另一个表获取数据的 pcollection 示例。

Google 团队分享的示例作为引用。 https://github.com/GoogleCloudPlatform/DataflowSDK-examples/blob/master-1.x/src/main/java/com/google/cloud/dataflow/examples/cookbook/JoinExamples.java .

最佳答案

来自Cloud DataFlow documentation ,我认为你有两种方法来完成这种JOIN任务。根据您拥有的唯一 c_id 数量,我会选择以下两个选项之一。

  • 如果您没有很多 c_id,我会将您的 SELECT 查询的结果视为辅助输入,并将其用作过滤器以传递到查找表B;

以下是使用 BigQueryIO 查询结果作为侧面输入的代码片段:Apply Side input to BigQueryIO.read operation in Apache Beam .

  • 否则,您可以使用CoGroupByKey。例如,
Table A:
c_id -> count_c_id, p_id

Table B
c_id -> c_name

由于两个表都可以被视为某些不同值的共享键,因此您可以将它们CoGroup

c_id -> ([count_c_id, p_id], [c_name]]

然后您就可以在这个“分组”的新 PCollection 上做任何您想做的事情。

关于java - 多个表的 Pcollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50427169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com