【Flink入门(6)】Flink的状态管理(基础)

本文深入介绍了Apache Flink的状态管理,包括OperatorState和KeyedState的基础概念、数据结构及代码示例。通过具体的应用场景展示了如何利用这两种状态进行数据处理,同时探讨了状态后端StateBackends的选择及其在横向扩展时的影响。
摘要由CSDN通过智能技术生成

【时间】2022.06.08 周三 

【题目】【Flink入门(6)】Flink的状态管理(基础)

本专栏是尚硅谷Flink课程的笔记与思维导图。

目录

引言

一、状态(state)概述

二、算子状态 Operator State

2.1 概述

2.2 数据结构

2.3 代码例子

三、键控状态 Keyed State

3.1 概述

3.2 数据结构

3.3 代码例子

3.4 两种状态的对比

3.5 横向扩展问题(并行度改变)

四、状态后端 State Backends

4.1 概述

4.2 不同的状态后端

4.3 代码示例

总思维导图

参考


引言

本节主要介绍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 &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值