![](https://img-blog.csdnimg.cn/20201223132738637.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Flink
文章平均质量分 87
本栏为Flink学习
<一蓑烟雨任平生>
没成功之前才华等于狗屎,只有成功了才证明你的一切!
展开
-
Flink SQL与HBase的集成
版本说明:flink-1.12.1hbase-1.4.13目录(1)Flink SQL与HBase的集成配置(2)测试Flink SQL与HBase集成代码(3)测试kafka数据源与HBase写入数据(1)Flink SQL与HBase的集成配置第一步:Maven dependency<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector原创 2021-04-12 23:01:58 · 1971 阅读 · 0 评论 -
Flink SQL与Hive的集成
版本说明:flink-1.12.1hive-2.3.4目录(1)Flink SQL与Hive集成的架构图(2)Flink 与 Hive 的集成包含两个层面(3)Flink SQL与Hive的集成配置(4)测试Flink SQL与Hive集成代码(5)测试kafka数据源与hive写入数据(1)Flink SQL与Hive集成的架构图(2)Flink 与 Hive 的集成包含两个层面一是利用了 Hive 的 MetaStore 作为持久化的 Catalog用户可通过HiveCatalo原创 2021-04-12 20:03:27 · 2746 阅读 · 0 评论 -
Flink SQL与JDBC的集成
版本说明:flink-1.12.1第一步:加载依赖与添加jar包Maven dependency<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-jdbc_2.11</artifactId> <version>${flink.version}</version></dependency>原创 2021-04-11 23:29:28 · 1210 阅读 · 1 评论 -
Flink SQL与Kafka的集成
目录(1)Flink Stream与Kafka的集成(2)Flink SQL与Kafka的集成(2.1)第一步:Flink SQL Client配置好(2.2)第二步:创建hiveConfDir(2.3)第三步:测试Flink SQL与Kafka集成的代码(2.4)第四步:测试kafka数据版本说明:flink-1.12.1kafka_2.12-2.4.1(1)Flink Stream与Kafka的集成添加maven依赖:<dependency> <groupId>原创 2021-04-11 17:02:27 · 4411 阅读 · 4 评论 -
Flink SQL Client配置与应用
版本说明:flink-1.12.1hive-2.3.4目录(1)Flink SQL Client介绍(2)解决Hive的坑(3)配置Hive与Flink的集成(4)配置HiveCatalog(5)启动测试(1)Flink SQL Client介绍SQL 客户端 的目的是提供一种简单的方式来编写、调试和提交表程序到 Flink 集群上,而无需写一行 Java 或 Scala 代码。SQL 客户端命令行界面(CLI) 能够在命令行中检索和可视化分布式应用中实时产生的结果。Flink SQL C原创 2021-04-10 16:03:31 · 3432 阅读 · 0 评论 -
Flink SQL之Catalogs
目录(1)Catalogs主要定义(2)Catalogs类型(3)Catalogs在Flink SQL架构中的位置(4)Catalogs 操作(1)Catalogs主要定义Catalog提供了元数据信息,例如数据库、表、分区、视图以及数据库或其他外部系统中存储的函数和信息。元数据可以是临时的,例如临时表、或者通过TableEnvironment注册的UDF,也可以是持久化的,例如Hive Metastore中的元数据。Catalog提供了一个统一的API,用于管理元数据,并使其可以从Table A原创 2021-04-09 15:29:36 · 2702 阅读 · 5 评论 -
Flink SQL之时态表(Temporal Tables)
目录时态表(Temporal Table)是一张随时间变化的表 – 在 Flink 中称为动态表,时态表中的每条记录都关联了一个或多个时间段,所有的 Flink 表都是时态的(动态的)。时态表包含表的一个或多个有版本的表快照,时态表可以是一张跟踪所有变更记录的表(例如数据库表的 changelog,包含多个表快照),也可以是物化所有变更之后的表(例如数据库表,只有最新表快照)。版本: 时态表可以划分成一系列带版本的表快照集合,表快照中的版本代表了快照中所有记录的有效区间,有效区间的开始时间和结束时间可原创 2021-04-09 11:49:18 · 2559 阅读 · 2 评论 -
Flink SQL之ProcessTime与EventTime的使用
目录(1)时间属性(2)ProcessTime(2.1)在创建表的 DDL 中定义(2.2)在 DataStream 到 Table 转换时定义(3)EventTime(3.1)在创建表的 DDL 中定义(3.2)在 DataStream 到 Table 转换时定义(1)时间属性处理时间 指的是执行具体操作时的机器时间事件时间 指的是数据本身携带的时间。这个时间是在事件产生时的时间。时间属性可以是每个表模式的一部分。当通过CREATETABLE DDL或创建表格时定义。一旦定义了时间属性,就可以原创 2021-04-08 16:48:46 · 7700 阅读 · 0 评论 -
Flink SQL之动态表
目录(1)动态表(2)在流上定义表(3)连续查询(4)表到流的转换(1)动态表动态表 是 Flink 的支持流数据的 Table API 和 SQL 的核心概念。与表示批处理数据的静态表不同,动态表是随时间变化的。可以像查询静态批处理表一样查询它们。查询动态表将生成一个 连续查询 。一个连续查询永远不会终止,结果会生成一个动态表。 查询不断更新其(动态)结果表,以反映其(动态)输入表上的更改。本质上,动态表上的连续查询非常类似于定义物化视图的查询。需要注意的是,连续查询的结果在语义上总是等价于以批处理原创 2021-04-08 12:47:52 · 986 阅读 · 0 评论 -
Flink之Table API与SQL(二)
目录(1)创建表的两种方式(2)DataStream、DataSet与Table的转换(2.1)通过 DataSet 或 DataStream 创建视图(2.2)将 DataStream 或 DataSet 转换成表(2.3)将表转换成 DataStream 或 DataSet(2.3.1)将表转换成 DataStream(2.3.2)将表转换成 DataSet(3)数据类型与Table Schema映射(3.1)原子类型(3.2)Tuple类型(3.3)POJO 类型(3.4)Row类型(1)创建表的两原创 2021-04-07 18:00:51 · 582 阅读 · 0 评论 -
Flink之Table API与SQL(一)
目录(1)Table API与SQL概念(2)Table 程序依赖(3)两种计划器(Planner)的主要区别(4)Table API 和 SQL 程序的结构(5)创建 TableEnvironment(1)Table API与SQL概念Flink 社区很早就设想过将批数据看作一个有界流数据,将批处理看作流计算的一个 特例,从而实现流批统一,Flink 社区的开发人员在多轮讨论后,基本敲定了 Flink 未来的 技术架构Apache Flink 有两种关系型 API 来做流批统一处理:Table A原创 2021-04-06 11:54:40 · 902 阅读 · 0 评论 -
Flink之Queryable State的使用
目录(1)Queryable State架构(2)Queryable State集群配置(3)将 state 设置为可查询(3.1)Queryable State Stream(3.2)Managed Keyed State(4)测试查询 state(1)Queryable State架构在展示如何使用 Queryable State 之前,先简单描述一下该特性的组成部分,主要包括以下三部分:QueryableStateClient,默认运行在 Flink 集群外部,负责提交用户的查询请求;Que原创 2021-04-05 15:47:35 · 1580 阅读 · 0 评论 -
Flink之Checkpoint机制
目录(1)Checkpoint的背景(2)Flink 中Checkpoint(3)理解 Barrier(4)Flink 中Checkpoint 执行过程(5)严格一次语义: barrier 对齐(6)至少一次语义: barrier 不对齐(7)checkpoint 和 savepoint 的区别(8)基于State Backend的CheckPoint开发(1)Checkpoint的背景State场景:flink中有状态函数和运算符在各个元素(element)/事件(event)的处理过程中存储的数据原创 2021-04-04 20:19:35 · 1615 阅读 · 0 评论 -
Flink之状态后端(StateBackends)
目录(1)状态后端的分类(2)配置状态后端每传入一条数据,有状态的算子任务都会 读取和更新状态 。由于有效的状态访问对于处 理数据的低延迟至关重要,因此每个并行任务(子任务)都会在本地维护其状态,以确保快速 的状态访问。状态的存储、访问以及维护,由一个 可插入 的组件决定,这个组件就叫做 状态后端 (state backend)状态后端主要负责两件事:本地的状态管理将检查点(checkpoint)状态写入远程存储(1)状态后端的分类状态后端作为一个可插入的组件, 没有固定的配置, 我们可以原创 2021-04-04 16:52:33 · 1176 阅读 · 0 评论 -
Flink之状态一致性
目录(1)一致性级别(2)端到端的状态一致性当在分布式系统中引入状态时,自然也引入了一致性问题。一致性实际上是"正确性级别"的另一种说法,也就是说在成功处理故障并恢复之后得到 的结果,与没有发生任何故障时得到的结果相比,前者到底有多正确?举例来说,假设要对 最近一小时登录的用户计数。在系统经历故障之后,计数结果是多少?如果有偏差,是有漏 掉的计数还是重复计数?(1)一致性级别在流处理中,一致性可以分为 3 个级别:at-most-once(最多变一次): 这其实是没有正确性保障的委婉说法——故障原创 2021-04-04 14:43:07 · 154 阅读 · 0 评论 -
Flink之状态编程BroadcastState的使用
目录(1)BroadcastState(2)BroadcastState代码开发(1)BroadcastState广播状态被引入以支持这样的用例:来自一个流的一些数据需要广播到所有下游 任务,在那里它被本地存储,并用于处理另一个流上的所有传入元素。作为广播状态 自然适合出现的一个例子,我们可以想象一个低吞吐量流,其中包含一组规则,我们 希望根据来自另一个流的所有元素对这些规则进行评估。Broadcast State使得Flink 用户能够以容错、一致、可扩缩容地将来自广播的低吞吐的事件流数据存储下来,原创 2021-04-03 23:01:58 · 706 阅读 · 0 评论 -
Flink之状态编程OperatorState的使用
t6t原创 2021-04-02 23:29:15 · 2334 阅读 · 1 评论 -
Flink之状态编程KeyedState的使用
目录(1)KeyedState(2)键控状态支持的数据类型(3)代码实现(1)KeyedState键控状态是根据输入数据流中定义的键(key)来维护和访问的。Flink 为每个键值维护一个状态实例,并将具有相同键的所有数据,都分区到同一个算 子任务中,这个任务会维护和处理这个 key 对应的状态。当任务处理一条数据时,它会自动 将状态的访问范围限定为当前数据的 key。因此,具有相同 key 的所有数据都会访问相同的 状态。Keyed State 很类似于一个分布式的 key-value map 数原创 2021-04-01 16:53:14 · 1422 阅读 · 0 评论 -
Flink之状态编程
目录(1)什么状态(2)为什么需要状态管理(3)Flink中状态的分类(4)Managed State 的分类有状态的计算是流处理框架要实现的重要功能,因为稍复杂的流处理场景都需要记录状 态,然后在新流入数据的基础上不断更新状态。SparkStreaming 在状态管理这块做的不好, 很多时候需要借助于外部存储(例如 Redis)来手动管理状态, 增加了编程的难度。Flink 的状态管理是它的优势之一。(1)什么状态在流式计算中有些操作一次处理一个独立的事件(比如解析一个事件), 有些操作却需原创 2021-03-30 15:55:37 · 256 阅读 · 0 评论 -
Flink之外部数据访问的异步 I/O
目录(1)对于异步 I/O 操作的需求(2)异步 I/O API超时处理结果的顺序事件时间容错保证(3)代码实现(1)对于异步 I/O 操作的需求在与外部系统交互(用数据库中的数据扩充流数据)的时候,需要考虑与外部系统的通信延迟对整个流处理应用的影响。简单地访问外部数据库的数据,比如使用 MapFunction,通常意味着同步交互: MapFunction 向数据库发送一个请求然后一直等待,直到收到响应。在许多情况下,等待占据了函数运行的大部分时间。与数据库异步交互是指一个并行函数实例可以并发地处理原创 2021-03-27 15:45:15 · 678 阅读 · 0 评论 -
Flink之ProcessFunction
目录Flink Process FunctionProcess Function我们之前学习的转换算子是无法访问事件的时间戳信息和水位线信息的。而这在一些应 用场景下,极为重要。例如 MapFunction 这样的map 转换算子就无法访问时间戳或者当前事 件的事件时间。基于此,DataStream API 提供了一系列的 Low-Level 转换算子。可以访问时间戳、 watermark以及注册定时事件。还可以输出特定的一些事件,例如超时事件等。Process Function用来构建事件驱动的应原创 2021-03-26 20:03:33 · 545 阅读 · 0 评论 -
Flink之join多流合并
目录(1)window多流合并(2)Window join(2.1)Tumbling Window Join详解(2.2)Sliding Window Join详解(2.3)Session Window Join详解(3)Interval join(4)几个流合并区别(1)window多流合并在Flink中支持窗口上的多流合并,即在一个窗口中按照相同条件对两个输入数据流进行关联操作,需要保证输入的Stream要构建在相同的Window上,并使用相同类型的Key作为关联条件。(2)Window jo原创 2021-03-25 15:52:01 · 10221 阅读 · 0 评论 -
Flink之window机制
目录(1)窗口概述(2)窗口的分类(2.1)基于时间的窗口(2.1.1)滚动窗口(Tumbling Windows)(2.1.2)滑动窗口(Sliding Windows)(2.1.3)会话窗口(Session Windows)(2.1.4)全局窗口(Global Windows)(2.2)基于元素个数的窗口(2.2.1)滚动窗口(2.2.2)滑动窗口(3)Window Function(1)窗口概述在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。 当然我们可以每来一个消息原创 2021-03-19 15:53:20 · 404 阅读 · 0 评论 -
Flink之Time与Watermark
目录(1)时间分类(2)EventTime的重要性和Watermark的引入(3)Watermark详解(3.1)Watermark图解(3.2)什么是Watermark?(3.3)如何计算Watermark?(3.4)Watermark有什么用?(3.5)Watermark如何出发窗口计算?(3.6)Watermark代码开发(1)时间分类在Flink的流式处理中,会涉及到时间的不同概念,如下图所示事件时间EventTime: 事件真真正正发生产生的时间摄入时间IngestionTime: 事件到原创 2021-03-14 20:20:16 · 334 阅读 · 0 评论 -
Flink之DataStream转换操作
目录(1)Map详解(2)FlatMap详解(3)Filter详解(4)KeyBy详解(5)Reduce详解(6)Aggregations详解(7)Union详解(8)Connect详解(9)Side Out详解(10)Iterate详解(1)Map详解调用用户定义的MapFunction对DataStream数据进行处理,形成新的DataStream,其中数据格式可能会发生变化,常用作对数据集内数据的清洗和转换。Map[DataStream -> DataStream]DataStream原创 2021-03-12 10:51:08 · 1614 阅读 · 0 评论 -
Flink之DataStream数据源
目录(1)Flink Source之文件数据源(2)Flink Source之Socket数据源(3)Flink Source之集合数据源(4)Flink Source之外部数据源(1)Flink Source之文件数据源Flink系统支持将文件内容读取到系统中,并转换成分布式数据集DataStream进行数据处理。在 DataStream API中,可以在read File方法中指定文件读取类型(Watch Type)检测文件变换时间间隔(interva)、文件路径过滤条件(File Filte原创 2021-03-10 22:06:01 · 614 阅读 · 1 评论 -
Flink之DataSet语义注释、广播变量、分布式缓存及参数传递
目录(1)语义注释(2)广播变量(3)分布式缓存(4)参数传递(1)语义注释在 Flink批量数据处理过程中,往往传入函数的对象中可能含有很多字段,其中有些字段是Function计算会用到的,但有些字段在进入 Funciton后并没有参与到实际计算过程中。针对这种情况,Fink提出了语义注解的功能,将这些字段在Function中通过注解的形式标记出来,区分出哪些是需要参与函数计算的字段,哪些是直接输出的字段。Flink Runtime在执行算子过程中,会对注解的字段进行判别,对于不需要函数处理的字段直接原创 2021-03-10 20:46:56 · 344 阅读 · 0 评论 -
Flink之DataSet迭代计算
目录(1)迭代计算分类与原理(2)全量迭代计算详解(2.1)案例分析(2.2)案例实战(3)增量迭代计算详解(1)迭代计算分类与原理迭代计算在批量数据处理过程中的应用非常广泛,如常用的机器学习算法Kmeans、逻辑回归,以及图形计算等,都会用到迭代计算。DataSet API对迭代计算功能的支持相对比较完善,在性能上比较其他分布式计算框架也具有非常高的优势。目前Flink中的迭代计算种类有两种模式,分别是Bulk Iteration (全量迭代计算)和 Delt Iteration(增量迭代计算)什么原创 2021-03-09 19:00:33 · 950 阅读 · 0 评论 -
Flink之DataSet数据输出
目录(1)Flink Sink之TextFile(2)Flink Sink之CSV(3)Flink Sink之MySQLFlink1.12官网对dataset数据输出(sink)的解释:https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/dev/batch/#data-sinks(1)Flink Sink之TextFile将DataSet数据以Text0utputFormat文本格式写入文件系统,其中文件系统可以是本地原创 2021-03-09 14:32:36 · 2016 阅读 · 2 评论 -
Flink之DataSet转换操作(二)
目录(8)Aggregate详解(9)Join详解(10)Union详解(8)Aggregate详解通过Aggregate Function将一组元素值合并成单个值,可以在整个DataSet数据集上使用。Java代码实现:package com.aikfk.flink.dataset.transform;import org.apache.flink.api.common.functions.FlatMapFunction;import org.apache.flink.api.common.原创 2021-03-08 21:22:10 · 520 阅读 · 0 评论 -
Flink之DataSet转换操作(一)
目录(1)Map详解(2)FlatMap详解(3)Map优化之MapPartition详解(4)Filter详解(5)Reduce详解(6)ReduceGroup详解(7)ReduceGroup优化之CombineGroup详解(8)Aggregate详解(1)Map详解完成对数据集Map端的转换,并行将每一条数据转换成新的一条数据,数据分区不发生变化Java代码实现:package com.aikfk.flink.dataset.transform;import org.apache.flin原创 2021-03-08 16:57:27 · 1161 阅读 · 0 评论 -
Flink之DataSet数据源
目录(1)Flink Source之Text数据源(2)Flink Source之JSON数据源(3)FlinkSource之CSV数据源(4)Flink Source之MySQL数据源(1)Flink Source之Text数据源ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();// read text file from local files systemDataSet<String&g原创 2021-03-07 18:57:25 · 996 阅读 · 0 评论 -
Flink编程模型
目录(1)Flink处理的数据集类型(2)Flink核心编程接口(3)Flink编程结构(3.1)ExecutionEnvironment(3.2)初始化数据(3.3)执行转换操作(3.4)分区key指定(3.5)输出结果(3.6)程序触发(4)Flink支持的数据类型(1)Flink处理的数据集类型任何类型的数据都可以形成一种事件流。信用卡交易、传感器测量、机器日志、网站或移动应用程序上的用户交互记录,所有这些数据都形成一种流。数据可以被作为 无界 或者 有界 流来处理。有界数据集:有界数原创 2021-03-07 00:07:24 · 989 阅读 · 0 评论 -
Apache Flink1.12开发环境配置
目录(1)基于IDEA配置开发环境(2)基于Java语言的WordCount程序开发(3)基于Scala语言的WordCount程序开发(4)程序打包并发布测试Flink1.12官方文档:https://ci.apache.org/projects/flink/flink-docs-release-1.12/(1)基于IDEA配置开发环境基本环境:IntelliJ IDEA 2021apache-maven-3.5.4jdk1.8.0_271scala-2.11.12配置pom.x原创 2021-03-05 21:23:56 · 1140 阅读 · 0 评论 -
Centos7下Apache Flink1.12安装部署
目录(1)Flink下载安装(2)安装配置(3)服务启动(4)运行测试安装环境准备:jdk1.8.0_281scala-2.11.12hadoop-2.8.5flink-1.12.1-bin-scala_2.11.tgz(1)Flink下载安装Flink下载地址:https://flink.apache.org/zh/downloads.html#section-9选择第二个Binaries下载,然后选择对应的Scala版本,我这里使用的是Scala2.11.12,所以我下载fl原创 2021-03-05 12:30:48 · 1224 阅读 · 0 评论 -
Flink架构原理
目录(1)Flink应用场景(2)Flink组件架构(3)Flink系统架构(3.1)Client客户端(3.2)JobManager(3.3)TaskManager(4)Tasks 和算子链(5)Task Slots 和资源(1)Flink应用场景实际生产的场景,如金融交易数据、互联网订单数据、GPS定位数据、传感器信号、启动终端生产的数据、通讯信号数据等,以及我们熟悉的网络流量监控、服务器产生的日志数据,这些数据最大的共同点就是实时从不同的数据源产生,然后在传输到下游的分析系统。针对这些数据类型主要原创 2021-03-04 19:42:26 · 768 阅读 · 2 评论 -
浅谈Flink概述及特点
目录(1)概述及特点(2)应用类型(2.1)事件驱动型应用(2.2)流批数据分析应用(2.3)数据管道应用(3)容错性(3.1)Exactly-once状态一致性(3.2)基于事件时间的处理(3.3)基于迟到数据的事件处理(4)分层API(4.1)ProcessFunction(底层流处理)(4.2)DataStream API & DataSet API(提供应用开发层面的API)(4.3)SQL on Stream & Batch Data(基于SQL的流批处理)(5)运维(5.1)灵活原创 2021-03-04 15:47:55 · 717 阅读 · 5 评论