Flink
文章平均质量分 89
未来影子
曾先后在百度、理想、快手参与研发工作
后端、大数据、NLP学习者
展开
-
Flink优化
Flink的内置函数在持续的优化当中,请尽量使用内部函数替换自定义函数。使用内置函数好处优化数据序列化和反序列化的耗时新增直接对字节单位进行操作的功能//初始化tableenvironmentTableEnvironmenttEnv=...//获取tableEnv的配置对象Configurationconfiguration=tEnv.getConfig().getConfiguration();//设置参数httpshttpshttps。...原创 2022-07-28 23:03:55 · 1513 阅读 · 0 评论 -
Flink实时数仓完结
默认情况下,在Flink的MapFunction中,单个并行只能用同步方式去交互将请求发送到外部存储,IO阻塞,等待请求返回,然后继续发送下一个请求。为了提高处理效率,可以增加MapFunction的并行度,但增加并行度就意味着更多的资源,并不是一种非常好的解决方式。异步查询实际上是把维表的查询操作托管给单独的线程池完成,这样不会因为某一个查询造成阻塞,单个并行可以连续发送多个请求,提高并发效率,这种方式特别针对涉及网络IO的操作,减少因为请求等待带来的消耗。...原创 2022-07-28 22:12:56 · 736 阅读 · 0 评论 -
Flink1.13集成Hadoop3.x以上版本
org.apache.flink.core.fs.UnsupportedFileSystemSchemeException: Could not find a file system implementation for scheme 'hdfs'. The scheme is not directly supported by Flink and no Hadoop file system to support this scheme could be loaded. For a full list of原创 2022-07-16 23:48:12 · 2313 阅读 · 1 评论 -
tried to access field com.mysql.cj.CharsetMapping.COLLATION_INDEX_TO_COLLATION_NAME from class io.de
tried to access field com.mysql.cj.CharsetMapping.COLLATION_INDEX_TO_COLLATION_NAME from class io.de原因分析从 8.0.26 开始,MySQL 驱动程序更改了以下变量访问语义此变量从公共改为私有将mysql-connector-java设置为8.0.26以下版本...原创 2022-07-16 23:46:26 · 1444 阅读 · 0 评论 -
FlinkCDC
CDCchangeDataCapture(变更数据获取)的简称。核心思想,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费CDC主要分为基于查询、基于Binlog两种方式基于查询基于Binlog开源产品执行模式BatchStreaming是否可以捕获所有数据变化否是延迟性高延迟低延迟是否增加数据库压力是否/***@Authoryingzi2、输出。...原创 2022-07-16 23:45:05 · 1013 阅读 · 0 评论 -
Flink面试重点
文章目录Flink介绍Flink架构(重点)作业提交流程高层级视角独立模式YARN集群Flink的水位线(重点)Flink的窗口(重点)窗口分类窗口函数窗口其他APIFlink的Checkpoint(重点)checkpoint保存checkpoint恢复checkpoint算法checkpoint配置SavepointExactly-One(重点)概念输入端保证输出端保证Flink的CEP(重点)概念应用场景模式API模式的检测处理Flink处理背压Flink SQL解析过程Flink介绍流式大数据处理原创 2022-05-02 12:29:15 · 536 阅读 · 0 评论 -
Flink-CEP
在实际应用中,有一类需求是要检测以特定顺序先后发生的一组事件,进行统计或作报警提示。多个事件的组合我们将其称为复杂事件。对于多个复杂事件的处理,由于涉及到事件的严格顺序,有时还有时间约束,很难直接用SQL或者DataStream API来完成。可以用最强悍的工具——底层的处理函数,对于非常复杂的组合事件,可能需要设置很多状态、定时器,并在代码中定义各种条件分支逻辑来处理,复杂度很高,可能会使代码失去可读性。Flink提供了专门用于处理复杂事件的库——CEP,可以让我们更加轻松地解决这类棘手的问题文章目录原创 2022-04-29 19:11:46 · 329 阅读 · 0 评论 -
Flink SQL中的函数
Table API是内嵌在Java语言中的,很多方法需要在类中额外添加,扩展功能比较麻烦,目前支持的函数比较少,故一般情况下我们使用Flink SQL中的函数Flink SQL中的函数主要分为两类:SQL内置函数,直接通过函数名调用,能够实现一些常用的转换操作,比如之前用到的COUNT()、CHAR_LENGTH()、UPPER等用户自定义函数UDF,需要在表环境中注册使用文章目录系统函数标量函数聚合函数自定义函数整体调用流程标量函数表函数聚合函数表聚合函数系统函数系统函数又叫内置函数,是在原创 2022-04-28 22:06:21 · 5066 阅读 · 0 评论 -
Flink Table和SQL的基本API
文章目录一个示例程序架构创建表环境创建表1、连接器2、虚拟表表的查询1、执行SQL查询2、调用Table API进行查询3、两种API的结合使用输出表表和流的转换1、将表转换成流2、将流转换成表3、支持的数据类型4、综合应用示例一个示例import com.yingzi.chapter05.Source.Event;import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;import org.apache原创 2022-04-28 22:05:05 · 672 阅读 · 0 评论 -
Flink时间属性和窗口
基于时间的操作,需要定义相关的时间语义和时间数据来源的信息。在Table API和SQL中,会给表单独提供一个逻辑上的时间字段,专门用来在表处理程序中指示时间时间属性是每个表模式结构的一部分,它可以在创建表DDL里直接定义为一个字段,也可以在DataStream转换成表时,一旦定义了时间属性,就可以作为一个普通字段引用,并且可以在基于时间的操作中使用。时间属性的数据类型为TIMESTAMP,它的行为类似于常规时间戳,可以直接访问并且进行计算按照时间语义的不同,可把时间属性的定义分成:事件时间、处理时间原创 2022-04-26 21:35:25 · 2252 阅读 · 0 评论 -
Flink流处理中的表
将一个Table转换成DataStream时,有仅插入流(Insert-Only-Streams)、更新日志流(Changelog Streams)两种方式,具体使用哪种方式取决于表中是否存在更新操作文章目录动态表和持续查询1、动态表2、持续查询3、将流转换成动态表用SQL持续查询1、更新查询2、追加查询3、查询限制将动态表转换成流关系型表/SQL流处理处理的数据对象字段元组的有界集合字段元组的无限序列查询(Query)可以访问到完整的数据输入无法访问到所有数据,必须原创 2022-04-26 21:34:05 · 1298 阅读 · 0 评论 -
Flink的Table和SQL的基本API
文章目录一个示例程序架构创建表环境创建表1、连接器2、虚拟表表的查询1、执行SQL查询2、调用Table API进行查询3、两种API的结合使用输出表表和流的转换1、将表转换成流2、将流转换成表3、支持的数据类型4、综合应用示例一个示例import com.yingzi.chapter05.Source.Event;import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;import org.apache原创 2022-04-26 21:32:48 · 1591 阅读 · 0 评论 -
Flink的容错机制
文章目录检查点检查点的保存从检查点恢复状态检查点算法检查点配置1、启动检查点2、检查点存储3、其他高级配置保存点1、保存点的用途2、使用保存点状态一致性一致性的概念和级别端到端的状态一致性端到端精确一次输入端保证输出端保证幂等写入事务写入Flink和Kafka连接时的精确一次保证1、整体介绍2、具体步骤3、需要的配置检查点检查点是Flink容错机制的核心。这里所谓的检查,其实是针对故障恢复的结果而言的。在有状态的流处理中,任务继续处理新数据,并不需要之前的计算结果,而是需要任务之前的状态。当故障恢复之后原创 2022-04-24 22:20:33 · 1449 阅读 · 0 评论 -
Flink状态编程
Flink处理机制的核心,就是“有状态的流式计算”,在简单聚合、窗口聚合、处理函数的应用,都会有状态的身影出现。在Flink这样的分布式系统中,我们不仅需要定义出状态在任务并行时的处理方式,还需要考虑如何持久化保存、以便发生故障时能正确地恢复,这就需要一套完整的管理机制来处理所有状态。接下来,将从状态概念入手,详细介绍Flink中的状态分类、状态的使用、持久化及状态后端的配置文章目录Flink中的状态状态算子无状态算子有状态算子状态的管理状态的分类托管状态和原始状态算子状态和按键分区状态按键分区状态基本原创 2022-04-24 08:58:34 · 456 阅读 · 0 评论 -
Flink处理函数
之前所介绍的流处理API,无论是基本的转换、聚合,还是更为复杂的窗口,其实都是基于DataStream进行转换;故统称为DataStream API,这也是Flink编程的核心。当然,为了让代码有更强大的表现力和易用性,Flink本身提供了很多层API。在更底层,我们可以不定义任何具体的算子(如map、filter、window)等,而只是提炼出一个统一的处理(process)操作——所有转换算子的一个概括性表达,可以自定义处理逻辑,这一层的接口被称为处理函数在处理函数中,我们将直面数据流中最基本的元素原创 2022-04-21 09:28:29 · 239 阅读 · 0 评论 -
Flink多流转换
无论是基本的简单转换和聚合,还是基于窗口的计算,我们都是针对某一条流上的数据进行处理。而在实际应用中,可能将多条流合并为一条流,也可能将一条流分为多条。文章目录分流基本合流操作联合(Union)连接(Connect)1、连接流(ConnectedStreams)2、CoProcessFunction3、广播连接流(BroadcastConnectedStream)基于时间的合流——双流联结(Join)窗口联结(Window Join)1、窗口联结的调用2、窗口联结的处理流程3、窗口联结实例间隔联结(Int原创 2022-04-21 09:25:44 · 281 阅读 · 0 评论 -
迟到数据的处理
迟到数据:指某个水位线之后到来的数据,它的时间戳其实是在水位线之前的文章目录设置水位线延迟时间运行窗口处理迟到数据将迟到的数据放入窗口侧输出流设置水位线延迟时间水位线是事件时间的进展,它是我们整个应用的全局逻辑时钟。水位线生成之后,会随着 数据在任务间流动,从而给每个任务指明当前的事件时间之前我们讲到触发器时曾提到过“定时器”,时间窗口的操作底层就是靠定时器来控制触 发的。既然是底层机制,定时器自然就不可能是窗口的专利了;事实上它是 Flink 底层 API— —处理函数(process funct原创 2022-04-16 23:53:40 · 603 阅读 · 1 评论 -
Flink窗口
文章目录窗口的概念窗口的分类按照驱动类型分类(1)时间窗口(2)计数窗口(Count Window)按照窗口分配数据的规则分类(1)滚动窗口(Tumbling Windows)(2)滑动窗口(Sliding Windows)(3)会话窗口(Session Windows)(4)全局窗口(Global Windows)窗口API概览按键分区窗口(Keyed)和非按键分区(Non-Keyed)代码中窗口API的调用窗口分配器(Window Assigners)1、时间窗口(1)滚动处理时间窗口(2)滑动处理时间原创 2022-04-16 23:51:50 · 8385 阅读 · 1 评论 -
Flink运行架构
文章目录系统架构作业管理器(JobManager)任务管理器(TaskManager)作业提交流程高层级抽象视角独立模式(Standalone)YARN集群重要概念数据流图(Dataflow Graph)并行度(Parallelism)算子链(Operator Chain)作业图(JobGraph)与执行图(ExecutionGraph)任务(Tasks)和任务槽(Task Slots)任务槽好并行度的关系系统架构JobManager和TaskManagers可以以不同的方式启动:作为独立集群的进原创 2022-04-15 22:45:20 · 831 阅读 · 0 评论 -
Flink中的水位线
文章目录水位线(Watermark)水位线的定义有序流中的水位线乱序流中的水位线水位线的特性水位线的生成水位线生成策略Flink内置水位线生成器自定义水位线策略(1)周期性水位线生成器断点式水位线生成器在自定义数据源中发送水位线水位线的传递水位线的总结水位线(Watermark)先引申出Flink中的时间语义:处理时间、事件时间处理时间:执行处理操作的机器的系统时间事件时间:数据生成的时间,自带一个时间戳(Timestamp)水位线的定义在事件时间的语义下,不依赖系统时间,而是基于数据自带的原创 2022-04-15 22:42:02 · 4973 阅读 · 4 评论 -
Flink输出算子
Flink提供了一个流式文件系统的连接器:StreamingFileSink,它继承自抽象类RichSinkFunction,而且集成了Flink的检查点机制,保证精确一次的一致性语义文章目录输出到文件输出到kafka输出到Redis输出到Elasticsearch输出到MySQL(JDBC)输出到文件StreamingFileSink为批处理和流处理提供了一个统一的Sink,它可以将分区文件写入Flink支持的文件系统。它可以保证精确一次的状态一致性,大大改进了之前流式文件Sink的的方式。它的主要原创 2022-04-15 22:37:56 · 899 阅读 · 0 评论 -
Flink转换算子
文章目录映射(map)过滤(filter)扁平映射(flatMap)聚合算子(Aggregation)按键分区(keyBy)+简单聚合归约聚合(reduce)用户自定义函数(UDF)函数类匿名函数(Lambda表达式)富函数类(Rich Function Classes)物理分区(Physical Partitioning)映射(map)基于DataStream调用map()方法就可以进行转换处理,方法需要传入的参数是接口MapFunction的实现,返回类型是 SingleOutputStreamO原创 2022-04-15 22:36:14 · 909 阅读 · 0 评论 -
DataStream API及源算子
一个Flink程序,其实就是对DataStream的各种转换。具体来说,代码基本上都由以下几部分构成获取执行环境(execution environment)读取数据源(source)定义基于数据的转换操作(transformation)定义计算结果的输出位置(sink)触发程序的执行(execute)文章目录执行环境(Execution Environment)1、创建执行环境2、执行模式3、触发程序执行源算子(Source)准备工作从集合、文件、SourceSocket、Kafka自定义S原创 2022-04-15 22:33:36 · 678 阅读 · 0 评论 -
Flink实现WordCount案例
批处理import org.apache.flink.api.common.typeinfo.Types;import org.apache.flink.api.java.ExecutionEnvironment;import org.apache.flink.api.java.operators.AggregateOperator;import org.apache.flink.api.java.operators.DataSource;import org.apache.flink.api.j原创 2022-04-15 22:31:06 · 950 阅读 · 0 评论