1.什么是Flink中的状态
- 计算的中间结果
2.Flink状态管理涉及到哪些
- 状态恢复 节点挂了重启 之前的状态要能恢复
- 调整并行度后 状态的并行度也要能一并调整
2.算子状态
-
2.1 什么是算子
-
实际上是一个本地变量。算子状态的作用范围限定为算子任务。这意味着由同一并行任务所处理的所有数据都可以访问到相同的状态,状态对于同一任务而言是共享的
-
2.2 算子状态的数据类型
- 列表状态:状态为一组值
- 联合列表状态:
- 广播状态:每个算子的状态都相同
-
2.3 算子状态的数据类型
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()