Apache flink 读取表中的所有条目,并仅在Flink中将其保存到MapState一次
我有一个表Apache flink 读取表中的所有条目,并仅在Flink中将其保存到MapState一次,apache-flink,flink-streaming,flink-sql,flink-statefun,Apache Flink,Flink Streaming,Flink Sql,Flink Statefun,我有一个表元数据 我想在我的Flink应用程序中使用表的内容。因此,我想读取表中的所有条目并保存到MapState 若我的应用程序重新启动,我不想从表中读取,而是从MapState中读取并使用它 有什么方法可以做到这一点吗?我在中链接的youtube视频和github repo涵盖了许多类似的场景。但是引导Flink状态的最佳方法是使用将数据预加载到保存点 请记住,Flink的MapState是一种键分区状态。因此,如果使用MapState,这实际上是一个Map,它通过键在集群中分片 下面的示例
元数据
我想在我的Flink应用程序中使用表的内容。因此,我想读取表中的所有条目并保存到MapState
若我的应用程序重新启动,我不想从表中读取,而是从MapState
中读取并使用它
有什么方法可以做到这一点吗?我在中链接的youtube视频和github repo涵盖了许多类似的场景。但是引导Flink状态的最佳方法是使用将数据预加载到保存点 请记住,Flink的
MapState
是一种键分区状态。因此,如果使用MapState
,这实际上是一个Map
,它通过键在集群中分片
下面的示例演示如何创建包含ValueState
的保存点:
公共类引导{
公共静态void main(字符串[]args)引发异常{
执行环境=
getExecutionEnvironment();
自举变换=
运算符转换.bootstrapWith(bEnv.fromElements(1,2,3))
.keyBy(字符串::valueOf)
.transform(新的SimplestTransform());
保存点
.create(新建fsstatebend(“file:///tmp/checkpoints"), 256)
.withOperator(“我的运算符uid”,转换)
.写(”file:///tmp/savepoints/");
execute();
}
静态公共类SimplestTransform
扩展KeyedStateBootstrapFunction{
价值状态;
@凌驾
公共无效打开(配置参数){
ValueStateDescriptor描述符=新建
ValueStateDescriptor(“总计”,Types.INT);
state=getRuntimeContext().getState(描述符);
}
@凌驾
公共void processElement(整数值,上下文ctx)引发异常{
状态更新(值);
}
}
}
这将创建一个分片键/值映射,其中包含{“1”:1,“2”:2,“3”:3}