20. Flink增量聚合函数和全窗口函数示例

[TOC]一、概念window function 定义了要对窗口中收集的数据做的计算操作,主要可以分为两类:增量聚合函数(incremental aggregation functions)每条数据到来就进行计算,保持一个简单的状态。典型的增量聚合函数有 ReduceFunction, AggregateFunction。全窗口函数(full window functions)先把窗口所有数据收集起来,等到计算的时候会遍历所有数据。 ProcessWindowFunction 就是一个全窗口函数。二、比较增量聚合函数计算性能较高,占用存储空间少,主要因为中间状态的计算结果,窗口中只维护中...

大数据 2022-01-22 PM 5℃ 0条

19.Flink Window API使用详解

[TOC]前言使用版本Flink 1.10.1JDK 1.8数据准备sensor_1,1547718199,35.8 sensor_6,1547718201,15.4 sensor_7,1547718202,6.7 sensor_10,1547718205,38.1 sensor_1,1547718206,32 sensor_1,1547718208,36.2 sensor_1,1547718210,29.7 sensor_1,1547718213,30.9nc工具命令nc -lk 8888一、窗口适配器(window assigner)1.1 概述窗口分配器:window() 方法我们...

大数据 2022-01-22 PM 9℃ 0条

18.Flink window API介绍

[TOC]一、窗口(window) 概念streaming流式计算是一种被设计用于处理无限数据集的数据处理引擎无限数据集是指一种不断增长的本质上无限的数据集窗口(window)是一种切割无限数据为有限块进行处理的手段Window是无限数据流处理的核心,Window将一个无限的stream拆分成有限大小的”buckets”桶,我们可以在这些桶上做计算操作Flink认为Batch是Streaming的一个特例,所以Flink底层引擎是一个流式引擎,在上面实现了流处理和批处理。窗口(window)就是从 Streaming 到 Batch 的一个桥梁场景示例​ 当然我们可以每来一...

大数据 2022-01-20 PM 12℃ 0条

17.Flink流处理API之Sink

[TOC]前言使用 Flink 进行数据处理时,数据经 Data Source 流入,通过系列 Transformations 的转化,最终可以通过 Sink 将计算结果进行输出,Flink Data Sinks 就是用于定义数据流最终的输出位置。一、概述Flink没有类似于spark中foreach方法,让用户进行迭代的操作。虽有对外的输出操作都要利用Sink完成。最后通过类似如下方式完成整个任务最终输出操作。stream.addSink(new MySink(xxxx))官方提供了一部分的框架的sink。除此以外,需要用户自定义实现sink。二、输出到文件import org.apa...

大数据 2022-01-17 PM 23℃ 0条

16.Flink实现UDF函数

前言实现UDF的目的是为了更加细粒度的控制流。一、函数类(Function Classes)Flink暴露了所有UDF函数的接口(实现方式为接口或者抽象类)。例如MapFunction, FilterFunction, ProcessFunction等等。下面例子实现了FilterFunction接口://自定义函数类,筛选出成绩大于等于60的学生 class MyFilter extends FilterFunction[Student]{ override def filter(t: Student): Boolean = { t.score >= 60 } }...

大数据 2022-01-16 PM 25℃ 0条

15【转载】Flink数据类型和序列化

[TOC]一、为 Flink 量身定制的序列化框架为什么要为 Flink 量身定制序列化框架?​ 大家都知道现在大数据生态非常火,大多数技术组件都是运行在 JVM 上的,Flink 也是运行在 JVM 上,基于 JVM 的数据分析引擎都需要将大量的数据存储在内存中,这就不得不面临 JVM 的一些问题,比如 Java 对象存储密度较低等。 针对这些问题,最常用的方法就是实现一个显式的内存管理,也就是说用自定义的内存池来进行内存的分配回收,接着将序列化后的对象存储到内存块中。 ​ 现在 Java 生态圈中已经有许多序列化框架,比如说 Java serializat...

大数据 2022-01-14 PM 29℃ 0条

14.Flink流处理API之Transform转换算子

[TOC]1、Map作用将数据流中的数据进行转换, 形成新的数据流,消费一个元素并产出一个元素。示例需求:使用Map将数据转换成样例类代码import org.apache.flink.streaming.api.scala._ /** * Created by lilinchao * Date 2022/1/13 * Description 使用Map将数据转换成样例类 */ object StreamMapTest { def main(args: Array[String]): Unit = { //1.构建运行环境 val env = St...

大数据 2022-01-13 PM 35℃ 0条

13.Flink流处理API之Source

[TOC]前言flink支持从文件、socket、集合中读取数据。同时也提供了一些接口类和抽象类来支撑实现自定义Source。版本:flink 1.14.2scala 2.12一、基于本地集合的source引入pom.xml依赖<properties> <flink.version>1.14.2</flink.version> <scala.binary.version>2.12</scala.binary.version> <scala.version>${flink.version}<...

大数据 2022-01-12 PM 39℃ 0条

12.Flink流处理API之Environment

前言流处理基本步骤:(1)创建环境(类似于spark里的上下文SparkContext);(2)添加数据来源Source;(3)对数据进行Transform处理;(4)添加输出Sink。一、Environment分类1、批处理ExecutionEnvironmentLocalEnvironment:本地模式执行RemoteEnvironment :提交到远程集群执行CollectionEnvironment :集合数据集模式执行OptimizerPlanEnvironment: 不执行作业,仅创建优化的计划PreviewPlanEnvironment: 提取预先优化的执行计划Contex...

大数据 2022-01-10 PM 56℃ 0条

11.Flink并行度和任务链

[TOC]一、并行度(Parallelism)1.1 概念​ Flink程序的执行具有并行、分布式的特性。​ 在执行过程中,一个流(stream)包含一个或多个分区(stream partition),而每一个算子(operator)可以包含一个或多个子任务(operator subtask),这些子任务在不同的线程、不同的物理机或不同的容器中彼此互不依赖地执行。​ 一个特定算子的子任务(subtask)的个数被称之为其并行度(parallelism)。一般情况下,一个流程序的并行度,可以认为就是其所有算子中最大的并行度。一个程序中,不同的算子可...

大数据 2022-01-10 PM 59℃ 0条