先上代码: public class WordCountKeyedState { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // 初始化测试单词数据流 DataStreamSource<String> lineDS = env.addSource(n…
        众所周知,flink是有状态的计算.所以学习flink不可不知状态.         正好最近公司有个需求,要用到flink的状态计算,需求是这样的,收集数据库新增的数据.         听起来很简单对吧?起初我也这么认为,现在发现,这尼玛就是变相的动态读取啊. 因为数据是一直在增加的,你需要记录这次收集的结果,用于下一次的运算,所以要用到状态计算. 废话不多说,直接上干货. 关于什么是有状态的flink计算,官方给出的回答是这样的:在flink程序内部存储计算产生的中间结果,…
在Flink中的每个函数和运算符都是有状态的.在处理过程中可以用状态来存储数据,这样可以利用状态来构建复杂操作.为了让状态容错,Flink需要设置checkpoint状态.Flink程序是通过checkpoint来保证容错,通过checkpoint机制,Flink可恢复作业的状态和计算位置. checkpoint检查点 前提条件 Flink的checkpoin机制需要与流和状态的持久化存储交互,一般它要求: 一个持久化的数据源 当Flink程序出现问题时,可以通过checkpoint持久化存储中…
运行作业界面 在以下界面中,可以查看到作业的名称.作业的启动时间.作业总计运行时长.作业一共有多少个任务.当前正在运行多少个任务.以及作业的当前状态. 这里的程序:一共有17个任务,当前正在运行的是17个任务. 作业概览界面 在这个界面中,我们可以看到数据流图.这个程序中,一共有3个算子. Custom Source任务并行度为1 Flat Map任务并行度为8, Flink Map –> Sink任务并行度为8 一共是17个任务. 在明细界面中,可以查看到具体每个算子接收的字节数.记录数,发送…
我们先来以滚动时间窗口为例,来看一下窗口的几个时间参数与Flink流处理系统时间特性的关系. 获取窗口开始时间Flink源代码 获取窗口的开始时间为以下代码: org.apache.flink.streaming.api.windowing.windows.TimeWindow /** * Method to get the window start for a timestamp. * * @param timestamp epoch millisecond to get the window…
Flink中的时间类型和窗口是非常重要概念,是学习Flink必须要掌握的两个知识点. Flink中的时间类型 时间类型介绍 Flink流式处理中支持不同类型的时间.分为以下几种: 处理时间 Flink程序执行对应操作的系统时间.所有基于时间的操作(例如:时间窗口)都将使用运行相应operator的系统时间.例如:每个小时的处理时间窗口包括在系统时间范围内所有operator接收到的记录.例如:如果应用程序在09:15开始运行,则第一个滚动时间窗口将包括:09:15 – 10:00 之间的处理事件…
RocksDB介绍 RocksDB简介 RocksDB是基于C++语言编写的嵌入式KV存储引擎,它不是一个分布式的DB,而是一个高效.高性能.单点的数据库引擎.它是由Facebook基于Google开源的kv存储LevelDB开发开发.RocksDB使用LSM存储引擎.它针对不同的生产环境进行调优,可以直接使用内存.也可以使用Flash.或者用硬盘或者HDFS.而且支持不同的压缩算法,有一整套的工具用于生产.调试使用.RocksDB是一种嵌入式.KV型.持久化的存储. 使用嵌入式的数据存储原因有…
什么是流式处理呢? 这个问题其实我们大部分时候是没有考虑过的,大多数,我们是把流式处理和实时计算放在一起来说的.我们先来了解下,什么是数据流. 数据流(事件流) 数据流是无边界数据集的抽象 我们之前接触的数据处理,大多都都是有界的.例如:处理某天的数据.某个季度的数据等 无界意味着数据是无限地.持续增长的 数据流会随着时间的推移,源源不断地加入进来 数据流无处不再 信息卡交易 电商购物 快递 网络交换机的流向数据 设备传感器发出的数据 - 这些数据都是无穷无尽的 每一件事情,都可以看成事件序列…
很多时候,我们在IDE中编写Flink代码,我们希望能够查看到Web UI,从而来了解Flink程序的运行情况.按照以下步骤操作即可,亲测有效. 1.添加Maven依赖 <dependency>       <groupId>org.apache.flink</groupId>       <artifactId>flink-runtime-web_2.11</artifactId>       <version>1.9.0</…
本篇我们将使用Java语言来实现Flink的单词统计. 代码开发 环境准备 导入Flink 1.9 pom依赖 <dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-java</artifactId> <version>1.9.0</version> </dependency> <de…