开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink中keyed state 不keyby()的流, 怎么存储状态呢?

Flink中keyed state can only be used on a 'keyed stream'
不keyby()的流, 怎么存储状态呢?

展开
收起
cuicuicuic 2024-01-09 12:28:40 65 0
1 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在Flink中,keyed state只能用于keyed stream。如果您的流没有使用keyby()进行分区,您可以考虑以下方法来存储状态:

    1. 使用全局变量或静态变量:您可以在程序的主类中定义一个全局变量或静态变量,用于存储状态。这样,即使流没有使用keyby()进行分区,您仍然可以在程序的其他部分访问和修改这个变量。但是,这种方法的缺点是全局变量或静态变量可能会受到其他线程的影响,导致数据不一致。

    2. 使用外部存储系统:您可以将状态存储在外部存储系统中,例如HDFS、HBase等。这样,即使流没有使用keyby()进行分区,您仍然可以通过外部存储系统访问和修改状态。但是,这种方法的缺点是需要额外的存储和管理成本。

    3. 使用RocksDB或其他嵌入式键值存储系统:您可以使用RocksDB或其他嵌入式键值存储系统来存储状态。这样,即使流没有使用keyby()进行分区,您仍然可以通过键值存储系统访问和修改状态。但是,这种方法的缺点是需要额外的依赖和配置成本。

    2024-01-09 14:25:16
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载