在Apache Flink中手动更新状态的最佳方法是什么?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

在Apache Flink中手动更新状态的最佳方法是什么?

2018-11-28 15:39:08 2313 1

我在股票市场项目中使用Apache Flink来计算当前的价格变化。公式是
price_change = (current_price - previous_close_price) / previous_close_price
previous_close_price是交易所前一天的证券收盘价。在市场开放前的每一天,我都需要更新previous_close_price。
现在我想出了几个解决方案,但我不知道哪个是最好的。

  1. 存储previous_close_price在redis中并在每次计算中获取价格。更新价格既简单又灵活,但此解决方案可能会降低性能。
  2. 将状态的TTL设置为1天。旧状态到期时获取新状态。但它不灵活,因为TTL是硬编码的。
  3. 广播状态模式。我不确定这个解决方案是否有效。
  4. 发送特殊消息给flink。当flink收到消息时,它会更新previous_close_price。
取消 提交回答
全部回答(1)
  • flink小助手
    2019-07-17 23:16:45

    "我建议在#4上使用一个变体:
    有两个来源,一个仅用于收盘价,另一个用于交易流。通过安全性键入两个流,并将它们与CoProcessFunction连接。将previous_close_price存储在CoProcessFunction中的键控状态。
    每天,在市场开放之前,以最新的收盘价流动。
    这可以使用RichCoFlatMap完成,但我建议使用CoProcessFunction,因为您可能希望使用侧输出来报告错误(例如缺少previous_close_price的证券)。
    至于其他方法:

    1. 我认为将previous_close_price数据保存在外部数据存储中没有任何好处。
    2. 我觉得这不太好用。没有可用于触发新数据加载的钩子,而且只有在访问状态时才会清除状态。
    3. 这对广播状态来说不是一个好的用例,除非集群中的每个人都需要知道所有证券的收盘价。"
    0 0
相关问答

1

回答

《Apache Flink 案例集(2022版)》这本书从哪里下载?

2022-08-31 10:31:53 90浏览量 回答数 1

1

回答

什么是Apache Flink?

2022-05-10 18:27:22 126浏览量 回答数 1

1

回答

Apache Flink中的表是什么?

2021-12-08 21:36:12 133浏览量 回答数 1

1

回答

Apache Flink中流处理的状态是什么呢?

2021-12-07 21:03:28 257浏览量 回答数 1

1

回答

Apache Flink中内置高可用服务是什么呢?

2021-12-07 21:16:10 142浏览量 回答数 1

1

回答

Apache Flink中的连接器是什么呢?

2021-12-07 21:48:56 167浏览量 回答数 1

1

回答

Apache Flink的优势是什么?

2021-11-02 18:24:24 290浏览量 回答数 1

1

回答

Apache Flink 有什么优势?

2021-10-27 11:35:48 154浏览量 回答数 1

0

回答

实时计算 Flink 版与开源 Apache Flink 的区别是什么?

2021-10-20 16:31:32 380浏览量 回答数 0

1

回答

Apache Flink是什么?

2020-12-30 10:52:15 558浏览量 回答数 1
+关注
flink小助手
flink小助手会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关flink的问题及回答。
文章
问答
问答排行榜
最热
最新
相关电子书
更多
《Apache Flink-重新定义计算》PDF下载
立即下载
《基于 Flink 的全新 Pulsar Connector 的设计、开发和使用》
立即下载
Flink中的两类新型状态存储
立即下载