当前位置: 首页 > 知识库问答 >
问题:

Flink键控过程函数是否可以有多个状态描述符?

裴卓君
2023-03-14

我使用键控进程函数来使用RocksDB状态后端。我想为同一把钥匙持有两种不同的状态;

  • 状态1类型:ValueState[字符串]
  • 状态2类型:MapState[String, Long]

在这种情况下,我必须在同一个键控进程函数中创建两个状态描述符。这在flink中可能吗?

共有1个答案

邹华皓
2023-03-14

是的,您可以在键控进程函数中拥有任意数量的状态描述符。每个都必须有一个唯一的名称(范围为运算符/函数)。

有关示例,请参见骑乘设施和票价培训练习的解决方案。

 类似资料:
  • 我有一份Flink的工作,我尝试在后端类型RockDB中使用键控流状态函数(MapState), MyRichMapFunction是一个有状态函数,它扩展了RichMapFunction,RichMapFunction有以下代码, 将来,我想重新缩放并行度(从2到4),所以我的问题是,如何实现可重新缩放的键控状态,以便在更改并行度后,我可以将相应的缓存键控数据获取到其相应的任务槽中。我试图探索这

  • 问题内容: 静态变量只有实例(也就是说,它们是类的一部分)。例如:Math.pi 有什么办法可以有多个静态变量实例吗?我听说有一些与Classloader相关的东西吗? 问题答案: 如果发现需要一个静态变量的多个实例,则强烈表明您不应该首先使用静态变量。 是的,如果同一类加载到不同的类加载器中,则该类的每个副本将具有其自己的静态变量。但是,唯一可以静态引用这些静态变量的代码将是由同一类加载器加载的

  • 我有一个带有一些键的流,我想为每个键存储一些状态。我的流看起来如下所示: 在KeyedProcessFunction中,我有一个状态变量: 我对此还这么陌生,我做错了什么?

  • 问题内容: 我有一个用于编码URI的便捷类。在其中,根据需要的具体程度,我创建了三种方法。我想知道在这种情况下是否使用JavaDoc 重用描述?(我还没有找到) 问题答案: 否。复制适用于覆盖的方法,但不适用于重载的方法。http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/javadoc.html#inheritingcomments

  • 在Flink中,像“平面地图”、“地图”等运算符称为任务,如果我将平面地图的并行度设置为30,那么这个任务有30个子任务。 现在,如果我只有一个插槽,它会在一个插槽中产生多个线程吗?还是每个插槽只有一个线程? Flink会在该插槽中简单地创建30个线程,还是使用类似线程池的东西? 以上不是一个恰当的例子。 假设在作业中我有操作符flatMap和map,它们都有并行度1,我只有一个插槽,这个插槽会创

  • 根据我的理解,Flink中的运算符有源运算符、转换运算符等。我对Flink中运算符的理解正确吗? 在运算符状态下,Flink是维护每个运算符的状态(如针对每个作业/任务的map(),reduce()等),还是维护一个完成的作业/任务的状态?还有,如果我的作业是以多个并行提交的,那么每个槽会有自己的状态吗?