【时间】2022.06.08 周三
【题目】【Flink入门(6)】Flink的状态管理(基础)
本专栏是尚硅谷Flink课程的笔记与思维导图。
目录
引言
本节主要介绍flink中的状态管理(基础),包括:
- 算子状态 Operator State和 键控状态 Keyed State的概述与使用
- 设置状态后端 State Backends
一、状态(state)概述


二、算子状态 Operator State
2.1 概述


2.2 数据结构

2.3 代码例子

代码:
package apitest.state;
import apitest.beans.SensorReading;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.streaming.api.checkpoint.ListCheckpointed;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import java.util.Collections;
import java.util.List;
public class StateTest1_OperatorState {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
// socket文本流
DataStream<String> inputStream = env.socketTextStream("localhost", 7777);
// 转换成SensorReading类型
DataStream<SensorReading> dataStream = inputStream.map(line -> {
String[] fields = line.split(",");
return new SensorReading(fields[0], new Long(fields[1]), new Double(fields[2]));
});
// 定义一个有状态的map操作,统计当前分区数据个数
SingleOutputStreamOperator<Integer> resultStream = dataStream.map(new MyCountMapper());
resultStream.print();
env.execute();
}
// 自定义MapFunction
public static class MyCountMapper implements MapFunction<SensorReading, Integer>, ListCheckpointed<Integer> {

本文深入介绍了Apache Flink的状态管理,包括OperatorState和KeyedState的基础概念、数据结构及代码示例。通过具体的应用场景展示了如何利用这两种状态进行数据处理,同时探讨了状态后端StateBackends的选择及其在横向扩展时的影响。
最低0.47元/天 解锁文章
472

被折叠的 条评论
为什么被折叠?



