gpt4 book ai didi

Apache Flink 中的有状态函数

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

我研究了 Apache Flink 的新 Stateful Functions 2.0 API。我阅读了以下文档链接 https://ci.apache.org/projects/flink/flink-statefun-docs-stable/ .我也在 Git repo 中运行示例。 ( https://github.com/ververica/stateful-functions/tree/master/stateful-functions-examples )我对实现没有什么疑问。

https://flink.apache.org/stateful-functions.html --> 页面末尾有一个示例,即 Transaction Scoring for Fraud Detection。

第一个问题是关于状态 TTL。我怎样才能给TTL状态?示例说:30 天后,“欺诈计数”函数将收到一条过期消息(来自其自身)并清除其状态。我应该做这个手册还是有其他功能?如何完成本手册?

关于 keyedstream 的第二个问题。示例说:将存在多个“欺诈计数”实例——例如,每个客户帐户一个。我应该给 PersistedTable<K,V> 赋值吗? ?例如<customerid,count> .我可以清除特定键的状态吗?

最后一个问题是关于窗口化和水印的。如何将这些功能实现到 Stateful Functions 2.0?

最佳答案

First question is about state TTL. How can I give to state to TTL? Example says: After 30 days, the “Fraud Count” function will receive an expiration message (from itself) and clear its state. Should I do this manually or is there another feature? How can I do this manual?

您可以使用 delayed message 手动执行此操作.实际上,您可以通过向自己发送延迟消息来创建回调触发器。这个消息是持久的,在失败的情况下不会丢失。如果您查看 fraud count函数,在模型服务示例中,您将看到它正是这样做的。当收到一个值时,会延迟 30 天发送 ttl 消息。当收到该消息时,计数会减少。

Second Question about keyedstream. Example says: multiple instances of “Fraud Count” will exist — for example, one per customer account. Should I put values to PersistedTable? For example . Can I clear state to specific key?

所有函数实例都是“键控的”,因为用户代码总是在键的范围内调用,并且所有持久化字段都在该键范围内。关键是 address 的“id”组件.在您的示例中,您可以有一个函数“CustomerFunction”来跟踪您公司的每个客户的信息。当您想与该客户互动时,您将向其发送消息,将客户 uid 指定为地址的“id”。

new Address(new FunctionType("ns", "customer"), "customer-id-1");

如果您要跟踪每个客户的计数,您只需要一个 PersistedValue,因为它已经限定在该客户 ID 范围内。回到欺诈计数示例,该函数的作用域是“账户 ID”,它跟踪每个银行账户的欺诈交易数量。

Last Question is about windowing and watermark. How can I implement theese feature to Stateful Functions 2.0?

statefun 2.0 不直接支持这些功能。 windows的原因是它们主要适用于数据处理,而不是应用程序开发。对于这些用例,尽管可以在用户代码中自己实现它们,但使用 Flink 的 DataStream 和 Table API 可能会更好地为您服务。

事件时间很棘手。事件时间是使用引擎盖下的“水印”来跟踪系统内时间的进展。它们依赖于与其水印相关的有序数据。这意味着如果事件 x 在 2:00 的水印前面以 1:59 的时间戳被摄取,它必须始终位于该水印的前面。否则,这个准时记录将被错误地标记为迟到。

有状态函数基于迭代和任意消息传递。因为记录可以在数据流中以任何方向进行,所以事件时间没有很好地定义。

关于Apache Flink 中的有状态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61209416/

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