gpt4 book ai didi

java - 根据时间戳过滤Dataflow中的有界数据

转载 作者:行者123 更新时间:2023-12-01 09:48:46 24 4
gpt4 key购买 nike

在我的数据流管道中,我将有两个 PCollections<TableRow>已从 BigQuery 表中读取。我计划将这两个 PCollection 合并为一个 PCollection与与 flatten .

由于 BigQuery 仅追加,因此目标是使用新的 PCollection 写入截断 BigQuery 中的第二个表。 .

我已经阅读了文档,但我对中间步骤感到困惑。与我的新PCollection计划是使用 Comparator DoFn查看最大最后更新日期并返回给定行。 我不确定是否应该使用过滤器转换,或者是否应该按键进行分组,然后使用过滤器?

全部PCollection<TableRow> s 将包含相同的值:IE:字符串、整数和时间戳。当涉及键值对时,大多数有关云数据流的文档仅包含简单的字符串。 是否有可能有一个键值对是 PCollection<TableRow> 的整行?

这些行看起来类似于:

customerID, customerName, lastUpdateDate
0001, customerOne, 2016-06-01 00:00:00
0001, customerOne, 2016-06-11 00:00:00

在上面的示例中,我希望过滤 PCollection 以仅将第二行返回到将写入 BigQuery 的 PCollection。 另外,是否可以应用这些Pardo位于第三个 PCollection 上而不创建第四个?

最佳答案

您问了几个问题。我试图单独回答这些问题,但我可能误解了整个情况。如果您提供一些示例代码,可能有助于澄清。

With my new PCollection the plan is to use a Comparator DoFn to look at the max last update date and returning the given row. I'm unsure if I should be using a filter transform or if I should be doing a Group by key and then using a filter?

根据您的描述,您似乎想采取 PCollection元素和每个 customerID (关键)找到该客户记录的最新更新。您可以通过 Top.largestPerKey(1, timestampComparator) 使用提供的转换来完成此操作您在哪里设置 timestampComparator仅查看时间戳。

Is it possible to have a key value pair that is the entire row of the PCollection?

一个KV<K, V>键 ( K ) 和值 ( V ) 可以具有任何类型。如果要按键分组,则键的编码器需要是确定性的。 TableRowJsonCoder不是确定性的,因为它可能包含任意对象。但听起来你想要 customerID对于 key 和整个TableRow的值(value)。

is it possible to apply these Pardo's on the third PCollection without creating a fourth?

当您申请PTransform时到 PCollection ,结果是一个新的 PCollection 。没有办法解决这个问题,您不需要尝试最小化 PCollections 的数量。在您的管道中。

一个PCollection是一个概念对象;它没有内在成本。您的管道将进行大量优化,以便许多中间PCollections - 尤其是 ParDo 序列中的那些变换 - 无论如何都不会实现。

关于java - 根据时间戳过滤Dataflow中的有界数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37767050/

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