Flink入门(5)--Flink的state机制

本文介绍了Flink的状态类型,包括managed State和raw State,重点讲解了keyed State和operator State的区别以及如何在代码中实现。此外,还提到了广播状态的概念,并概述了Flink state的存储方式。
摘要由CSDN通过智能技术生成

状态类型

  1. managed State 和 raw state
    managed state: 由flink runtime托管,状态是自动存储,自动恢复的,flink在存储管理和持久化上做了一些优化。横向扩展时候,状态能够自动重新分布到多个并行实例上。flink提供常用的数据结构,ListState,MapState
    raw state: 开发者自己管理,以字节数组存储,用户自定义算子
  2. keyed State: 是keyedstream上的状态,每个key对应自己的状态,是一种特殊的operator state
    operator State:可以用在所有算子上,每个slot里面的算子实例共享一个状态,流入这个滋任务和数据可以访问和更新这个状态
    两种算子都是基于本地的,即每个算子子任务维护者这个算子子任务对应的状态存储,算子子任务之间不能互相访问

代码实现

keyedStream 需要 在实现算子房中继承rich的方法,比如说不用flatmapfunction,而用richFlatMapFunction

package com.lagou.state;

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.common.functions.RichFlatMapFunction;
import org.apache.flink.api.common.state.ValueState;
import org.apache.flink.api.common.state.ValueStateDescriptor;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.KeyedStream;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;

public class StateDemo {
   
    public static void main(String[] args) throws Exception {
   
        //(1,3)(1,5)(1,7)(1,4)(1,2)
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.enableCheckpointing(2000);
        DataStreamSource<String> data = env.socketTextStream("hdp-
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值