gpt4 book ai didi

apache-spark - 保留 Spark 结构化流中给定键的最后一行

转载 作者:行者123 更新时间:2023-12-03 17:32:52 25 4
gpt4 key购买 nike

与 Kafka 的日志压缩类似,有很多用例需要只保留给定键的最后更新,并将结果用于例如连接数据。

如何将其存档在 spark 结构化流中(最好使用 PySpark)?

例如假设我有 table

key    | time   | value
----------------------------
A | 1 | foo
B | 2 | foobar
A | 2 | bar
A | 15 | foobeedoo

现在我想保留每个键的最后一个值作为状态(带水印),即可以访问数据帧
key    | time   | value
----------------------------
B | 2 | foobar
A | 15 | foobeedoo

我可能想加入另一个流。

优选地,这应该在不浪费一个支持的聚合步骤的情况下完成。我想我需要一个 dropDuplicates()功能相反的顺序。

请注意,这个问题是关于结构化流媒体以及如何在不浪费聚合步骤的构造的情况下解决问题的(因此,所有带有窗口函数或最大聚合的东西都不是一个好的答案)。 (如果您不知道:链式聚合现在是 unsupported 在结构化流中。)

最佳答案

使用 flatMapGroupsWithStatemapGroupsWithState ,按key分组,对flatMapGroupsWithState中的值按时间排序函数,将最后一行存入 GroupState .

关于apache-spark - 保留 Spark 结构化流中给定键的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50823468/

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