Flink有状态计算入门示例

Flink源码剖析:ValueState 文章目录1. 定义2. 示例3. 源码3.1 Update方法3.2 Value方法 1. 定义 State一般指一个具体的task的状态,而checkpoint则表示了一个Flink Job在一个特定时刻的一份全局状态快照,即对所有task的state进行持久化。Flink中有两种基本类型的State:Keyed State,Operator State。 2. 示例 下面一个有关定时器timer和Keyed State的代码示例,实现将10s内未出现的消息发往下游的功能,示例代码可以运行,有兴趣的同学不 阅读详情

需求:从socket接收字符串,按空格分隔成单词,统计单词出现的次数。

直接看代码吧。

主函数:

FlinkStatefulCalcTest.java
package com.ccclubs.flink;

import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;

/**
 * @author xianghu.wang
 * @time 2019/4/11
 * @description
 */
public class FlinkStatefulCalcTest {
    public static void main(String[] args) throws Exception {
        // 创建运行环境
        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        // 为方便输出,设置并行度为1
        env.setParallelism(1);

        // 从socket接收数据
        DataStream<String> words = env.socketTextStream("localhost", 9999, "\n");

        // 把字符串分隔成单词及其个数的键值对(未聚合)
        words.flatMap((String line, Collector<WordCount> out) -> {
            for (String s : line.split(" ")) {
                out.collect(new WordCount(s, 1));
            }
        }).returns(WordCount.class)
                // 按key分组,维护state时可认为只有一个key
                .keyBy("word")
                // 开始计算
                .flatMap(new WordCountFunction())
                // 打印在控制台
                .print();

        // print the results with a single thread, rather than in parallel
        env.execute("stateful Window WordCount");
    }

}

单词计数实体类:

WordCount.java
package com.ccclubs.flink;

/**
 * @author xianghu.wang
 * @time 2019/4/11
 * @description
 */
public class WordCount {
    /**
     * 单词
     **/
    private String word;
    /**
     * 单词个数
     **/
    private Integer count;

    public WordCount() {
    }

    public WordCount(String word, Integer count) {
        this.word = word;
        this.count = count;
    }

    public String getWord() {
        return word;
    }

    public void setWord(String word) {
        this.word = word;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }

    @Override
    public String toString() {
        return "WordCount{" +
                "word='" + word + '\'' +
                ", count=" + count +
                '}';
    }
}

状态类:

WordCountState.java
package com.ccclubs.flink;

import java.io.Serializable;

/**
 * @author xianghu.wang
 * @time 2019/4/11
 * @description 单词统计状态类
 */
public class WordCountState implements Serializable {
    /**单词**/
    private String word;
    /**单词个数**/
    private Integer count;

    public String getWord() {
        return word;
    }

    public WordCountState(String word, Integer count) {
        this.word = word;
        this.count = count;
    }

    public void setWord(String word) {
        this.word = word;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }
}

重点!!!! 计算函数

WordCountFunction.java
package com.ccclubs.flink;

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.configuration.Configuration;
import org.apache.flink.util.Collector;

/**
 * @author xianghu.wang
 * @time 2019/4/11
 * @description 有状态结算,RichFlatMapFunction<WordCount, WordCount>的泛型分别为
 * 入参和出参的数据类型(根据实际需求来,这里都是WordCount是巧合)
 */
public class WordCountFunction extends RichFlatMapFunction<WordCount, WordCount> {
    /**
     * 单词统计状态
     **/
    private transient ValueState<WordCountState> countState;

    /**
     * 有状态计算
     *
     * @param in
     * @param out
     * @throws Exception
     */
    @Override
    public void flatMap(WordCount in, Collector<WordCount> out) throws Exception {
        // access the state in
        WordCountState lastState = countState.value();
        // 第一次进入计算,更新state,输入原样返回
        if (lastState == null) {
            // 初始化state
            lastState = new WordCountState(in.getWord(), in.getCount());

            // 进来的数据原样返回
            out.collect(in);
            // 更新state
            countState.update(lastState);
        } else {
            // count 累加
            lastState.setCount(lastState.getCount() + in.getCount());
            out.collect(new WordCount(in.getWord(), lastState.getCount()));
            // 更新state
            countState.update(lastState);
        }
    }

    /**
     * 初始化ValueState(未指定默认值,官方推荐自己处理)
     *
     * @param config
     */
    @Override
    public void open(Configuration config) {
        ValueStateDescriptor<WordCountState> descriptor =
                new ValueStateDescriptor<>(
                        // the state name
                        "countState",
                        // type information
                        TypeInformation.of(new TypeHint<WordCountState>() {
                        }));
        countState = getRuntimeContext().getState(descriptor);
    }
}

运行结果:

 

 

参考:

https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/stream/state/state.html

注:转载请注明出处

Flink中基于State的有状态计算开发方法 文:王东阳 前言 状态在Flink中叫作State,用来保存中间计算结果或者缓存数据。根据是否需要保存中间结果,分为无状态计算和有状态计算。对于流计算而言,事件持续不断地产生,如果每次计算都是相互独立的,不依赖于上下游的事件,则是无状态计算。如果计算需要依赖于之前或者后续的事件,则是有状态计算。 在Flink中根据数据集是否根据Key进行分区,将状态分为Keyed State和Operator State(Non-keyed State)两种类型 ,本文主要介绍Keyed State,后续文章会介绍Oper 阅读详情

相关推荐

Flink实战案例(三十一):状态管理(二)自定义键控状态(一)ValueState

声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。 《2021年最新版大数据面试题全面开启更新》 ValueState[T]保存单个的值,值的类型为T。 get操作: ValueState.value() set操作: ValueState.update(value: T) 实例一 scala version val sensorData: DataStream[SensorReading] = ... val keyedData: KeyedStream[SensorR.

微信搜:import_bigdata,大数据领域硬核原创作者 1010

Flink的ValueState接口

根据Flink官方介绍,org.apache.flink.api.common.state.ValueState是一个封装类,类似于java标准库中的AtomicReference和AtomicLong。以下是ValueState的源码,不难看出,它是一个接口,并且继承了一个名为State的接口。 /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreemen

RonieWhite的博客 907

2、Apache Flink 入门指南

本文是一篇Apache Flink的入门指南,涵盖了Flink的发展历程、架构设计、分布式执行机制、核心特性以及快速启动和集群设置的详细步骤。同时,文章通过一个简单的单词计数示例程序帮助读者快速上手Flink的开发和运行流程。Flink作为一个高性能、低延迟的大数据处理框架,支持流处理和批处理,并具备精确一次的状态计算、灵活的窗口机制和高效的内存管理等特性。无论个人开发者还是企业用户,都可以通过本文了解并快速应用Flink进行数据处理与分析。

motor的博客 57

Flink State示例

Flink State示例 // 流1 要先按照id分组,再设置水印和事件时间,因为后面注册的定时器是基于事件时间的 DataStreamSource<Order> sourceStream1 = env.addSource(consumer); KeyedStream<Order, String> stream1 = sourceStream1.assignTimestampsAndWatermarks(new BoundedOutOfOrdernessTimestampExtra

机器学习菜鸟 413

stm32 + freertos + c++混合编程方法

其他一些资料上面,c++配置成--cpp11或者-cpp 都是把工程配置成c++。三、添加cpp文件,我们调用cpp文件里面的接口函数,不需要修改main.c后缀名。2、配置工程编译时候是--c99,是因为工程里面FreeRTOS是c语言,c++模式会报错。我们这里是默认c,编写的c++文件,单独选择--cpp编译,这在后面配置!c++是面向对象编程,对于一些项目来说,c++编程更加合适!stm32cubemax配置,这里就不写了,配置资料比较多。这里就是让cpp文件在c++下编译。最后,编程成功,点亮!

yuhu0012的博客 2629

游戏开发-GM系统的设计

游戏管理员(gm)作为游戏中拥有更高权限的账号,在游戏开发的过程中,我们需要很早的将gm系统做出来,作为测试游戏逻辑具有不可替代的作用。 内容目录 服务端与客户端通讯基本流程 gm命令格式设计 gm系统的实现 服务端与客户端通讯基本流程 服务端与客户端通信,如果基本的网络框架搭建完成,那么我们只需要写好命令就可以了 服务器完成一条命令的添加需要3个过程。 (1)命令格式的定义

微不足道 4616

2021-03-08~09~10~11~12 大数据课程笔记 day47day48day49day50day51

@R星校长 大数据技术之Flink 第一章 初识Flink   在当前数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如何进行有效的处理,成为当下大多数公司所面临的问题。目前比较流行的大数据处理引擎Apache Spark,基本上已经取代了MapReduce成为当前大数据处理的标准。但对实时数据处理来说,Apache Spark的Spark-Streaming还有性能改进的空间。对于Spark-Streaming的流计算本质上还是批(微批)计算,Apache Flink.

qq_44745905的博客 1436

数字IC后端项目典型问题之后端实战项目问题记录

数字IC后端培训教程之数字后端实战项目问题debug及解决方案记录

weixin_37584728的博客 1715

Flink有状态计算

状态是什么?状态就是数据,准确点说,状态是指 Flink 作业计算时依赖的历史数据或中间数据。如果一个 Flink 作业计算依赖状态,那它就是有状态计算的作业,反之就是无状态计算的作业。举个例子,服务端应用为了方便扩缩容,一般会设计成无状态的,但是对外服务的接口又是有状态的,这是因为服务端应用本身不存储数据,数据存储在关系型或非关系型数据库中,此时的“状态”就从服务端迁移到数据库中了。Flink 同理,一个稍微复杂一点的作业,基本都会使用到状态。

程序员小潘 1667

iTunes登录协议抓包实战:绕过反检测与TLS解密的完整方案

在软件逆向与网络协议分析中,抓包工具扮演着关键角色。代理型工具如Fiddler通过修改系统代理实现HTTPS解密,而驱动型工具如HTTPDebugger则注入进程钩取网络API,但这些实现机制往往会被具有反检测策略的客户端识别。以iTunes登录协议为例,其内置证书锁定、进程完整性与系统代理检测等防护,导致常规抓包方案失效。从工具原理出发,对比不同抓包方案的暴露面,重点介绍如何利用Fiddler通过中间人代理获取明文流量,以及使用Wireshark进行被动监听规避检测的进阶技巧,并总结常见问题排查经验,为分

weixin_28607671的博客 366

西门子S7-1200和IFM IO-Link主站连接与设定

硬件配置:S7-1200 1214DC/DC/DC,IFM AL1102支持Profinet,IFM支持IO-Link的流量传感器SBG233,流量开关SI5010,接近开关IF6123。第三步:打开IFM moneo configure可查看到流量传感器SBG233 PLC映射所有输出共占用4个byte,也可在IFM官网下载传感器对应IODD文件。第五步:组态编程编译下载。最近新做了一个项目,用到了IO-Link设备,今天来分享一下S7-1200和IFM IO-Link主站模块AL1102的连接过程。

GreatShen168的博客 6492

适合新手的Flink入门教程

看了这篇,再看官网就轻松了。

3y 1万+

2026.02.04 AI趋势|原生工作流爆发,智能体重构开发范式

2026年2月4日GitHub Trending榜单迎来关键转变——传统工具链项目占比骤降,AI原生工作流相关项目成为绝对主流。本次Top 20榜单中,超70%项目聚焦AI模型的四大核心能力:上下文增强、任务编排、自治执行、知识闭环。值得关注的是,Claude生态(如claude-mem)与OpenAIskills框架形成跨厂商协同,尽管设计理念有差异,但共同推动多模型智能体(Multi-Model Agent)成为新一代软件基础设施,AI开发正式从“单点调用”迈入“系统级编排”时代。

lpfasd123的博客 348

Flink+Kafka做有状态的实时计算实例

Flink消费Kafka数据,对消费的数据做实时计算是实时计算领域应用最为广泛的场景。下面介绍下如何使用Flink对接Kafka,并成功消费数据(考虑到计算程序复杂性本文以WordCount为例)做实时计算, 1.首先是pom文件,这里的Flink,Kafka版本要与集群中安装的一致。 <dependency> <groupId>org.apache.flink</groupId> <artifactId>

weixin_43424643的博客 1505

SAP S4 HANA:按单生产(MTO)场景中的COGS分割

本文介绍了SAP S/4HANA中提供的各种选项,以在销售订单/商品是按订单生产(以下称为MTO)生产流程中的成本对象时,在基于帐户的COPA环境中报告COGS分割信息。

adam915的博客 1191

[Dify实战] OA 公文排版助手:自动格式化、编号、生成摘要-带配套资源

摘要: Dify 公文排版助手通过自动化解决公文处理中的格式混乱、编号错漏等问题。支持标题层级自动编号、摘要生成、要素补全等功能,输出标准化Markdown格式。核心流程包括输入原文、智能识别、自动排版与要素输出,适用于通知、纪要等场景。实施需统一模板规则,规范输入格式,并通过试跑优化纠错率与处理效率。关键价值在于减少人工返工,提升排版一致性,未来可对接OA系统实现全流程自动化。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 472

Flink的状态介绍和有状态的计算

** Flink的状态介绍 ** Flink的状态指的是 1.维护的状态变量,键控状态 值状态(Value state) 为每个键存储一个任意类型的单个值。复杂数据结构也可以存储为值状态。 列表状态(List state) 为每个键存储一个值的列表。列表里的每个数据可以是任意类型。 映射状态(Map state) 为每个键存储一个键值映射(map)。map的key和value可以是任意类型。 2....

sghuu的博客 3433

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Flink开发-实现有状态的计算

Flink开发-实现有状态的计算1. Checkpoint原理及配置方法1.1 开启Checkpoint1.2 State Backend1.2.1 MemoryStateBackend1.2.2 FsStateBackend1.2.3 MemoryStateBackend2. 故障重启恢复流程2.1 重启恢复基本流程2.2 重启策略2.2.1 Fixed Delay(固定延时重启)2.2.2 Failure Rate(故障率重启)2.2.3 No Restart(不重启)3. Flink的几种状态类型3.

学习记录 1255

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Flink 入门教程

实时流处理的应用场景 现在的社会已然进入了大数据AI时代,各行各业都有大量的数据需要处理,并希望从数据中挖掘价值。下面简单举几个例子: 物联网中各种行为结果数据的实时收集分析 金融行业中各种交易行为数据结果的实时收集分析 电商行业中用户的浏览点击等行为数据结果的实时收集分析 … 实时流处理的目标 低延迟 高吞吐 正确性 可容错(即可以中断,并可以恢复且保证exactly once) 顺序性(...

Vioao's Blog 3万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

超越Storm,SparkStreaming——Flink如何实现有状态的计算

流式计算分为无状态和有状态两种情况。无状态计算观察每个独立的事件,Storm就是无状态的计算框架,每一条消息来了以后和前后都没有关系,一条是一条。比如我们接收电力系统传感器的数据,当电压超过240v就报警,这就是无状态的数据。但是如果我们需要同时判断多个电压,比如三相电路,我们判断三相电都高...

475

Flink 有状态的算子和应用程序

流式计算分为无状态和有状态两种情况。无状态的计算观察每个独立事件,并根据最后一个事件输出结果。例如,流处理应用程序从传感器接收水位数据,并在水位超过指定高度时发出警告。有状态的计算则会基于多个事件输出结果。以下是一些例子。 所有类型的窗口。例如,计算过去一小时的平均水位,就是有状态的计算。 所有用于复杂事件处理的状态机。例如,若在一分钟内收到两个相差20cm以上的水位差读数,则发出警告...

全网同名,欢迎关注。 2521

Apache Flink 培训系列 - 有状态计算的实验

今天笔者继续讲解 Apache Flink 培训系列课程中的实验2 - 有状态计算,带读者练习如何将每次乘车的 TaxiRide 和 TaxiFare 记录进行 join 操作。输入数据...

DataFlow范式 866

Flink有状态计算概述

在Flink架构体系中,有状态计算可以说是Flink非常重要的特性之一。有状态计算是指在程序计算过程中,在Flink程序内部存储计算产生的中间结果,并提供给后续Funct...

ItStar 2607
上一篇: 《Flink 技术内幕之 Jobs and Scheduling》(官网翻译)
下一篇: State TTL in Flink 1.8.0: How to Automatically Cleanup Application State in Apache Flink (转载)
Mathieu66
博客等级 码龄10年 68粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值