Flink
文章平均质量分 74
文刀小桂
这个作者很懒,什么都没留下…
展开
-
详解 Flink CDC 的介绍和入门案例
CDC 是 Change Data Capture(变更数据获取)的简称。核心思想是监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。 Flink CDC 是一个内置了 Debezium 的基于 Binlog 的可以直接从 MySQL、PostgreSQL 等数据库直接读取全量数据和增量变更数据的 source 组件。原创 2024-06-14 12:43:26 · 1076 阅读 · 0 评论 -
详解 Flink Table API 和 Flink SQL 之函数
UDF 显著地扩展了查询的表达能力,可以解决一些系统内置函数无法解决的需求。使用步骤为:自定义 UDF 函数类继承 UserDefinedFunction 抽象类;创建 UDF 实例并在环境中调用 registerFunction() 方法注册;在 Table API 或 SQL 中使用。原创 2024-06-13 18:41:18 · 891 阅读 · 0 评论 -
详解 Flink Table API 和 Flink SQL 之窗口操作
时间语义,要配合窗口操作才能发挥作用。原创 2024-06-13 12:20:53 · 314 阅读 · 0 评论 -
详解 Flink Table API 和 Flink SQL 之时间特性
Table API 和 SQL 进行基于时间的操作(比如时间窗口)时需要定义相关的时间语义和时间数据来源的信息。因此会给表单独提供一个逻辑上的时间字段,专门用来在表处理程序中指示时间时间属性(time attributes),其实就是每个表模式结构(schema)的一部分。它可以在创建表的 DDL 里直接定义为一个字段,也可以在 DataStream 转换成表时定义。一旦定义了时间属性,就可以作为一个普通字段引用,并且可以在基于时间的操作中使用。原创 2024-06-12 18:41:44 · 554 阅读 · 0 评论 -
详解 Flink Table API 和 Flink SQL 之流处理中的表
动态表可以像静态的批处理表一样进行查询操作。由于数据在不断变化,因此基于它定义的 SQL 查询也不可能执行一次就得到最终结果,所以对动态表的查询就永远不会停止,一直在随着新数据的到来而继续执行。这样的查询就被称作“持续查询”(Continuous Query)对动态表进行持续查询(continuous query),生成新的动态表。流(stream)被转换为动态表(dynamic table)生成的动态表被转换成流。原创 2024-06-12 12:25:48 · 569 阅读 · 0 评论 -
详解 Flink Table API 和 Flink SQL 之表和 DataStream 的转换
【代码】详解 Flink Table API 和 Flink SQL 之表和 DataStream 的转换。原创 2024-06-11 19:01:56 · 360 阅读 · 0 评论 -
详解 Flink Table API 和 Flink SQL 之表操作
表的输出是通过将数据写入到 TableSink 来实现的。TableSink 是 Table API 中提供的一个向外部系统写入数据的通用接口,可以支持不同的文件格式(比如 CSV、Parquet)、存储数据库(比如 JDBC、HBase、Elasticsearch)和消息队列(比如 Kafka)对于流式查询(Streaming Queries),需要声明如何在(动态)表和外部连接器之间执行转换。与外部系统交换的消息类型,由更新模式(update mode)指定。引入 flink-json 依赖。原创 2024-06-11 12:25:37 · 808 阅读 · 0 评论 -
详解 Flink Table API 和 Flink SQL 之入门介绍
Flink 提供了对于“表”处理的支持,这就是更高层级的应用 API,在 Flink 中被称为 Table API 和 SQLTable API 是基于“表”(Table)的一套 API,它是内嵌在 Java、Scala 等语言中的一种声明式领域特定语言(DSL),也就是专门为处理表而设计的Flink SQL 是基于 Apache Calcite 实现了对 SQL 的支持。原创 2024-06-10 19:54:23 · 529 阅读 · 0 评论 -
详解 Flink 的容错机制
有状态流应用中的检查点(checkpoint),其实就是所有任务的状态在某个时间点的一个快照(一份拷贝),这个时间点应该是所有任务都恰好处理完一个相同的输入数据的时刻。在一个流应用程序运行时, Flink 会定期保存检查点,在检查点中会记录每个算子的 id 和状态;如果发生故障,Flink 就会用最近一次成功保存的检查点来恢复应用的状态,重新启动处理流程,就如同“读档”一样。检查点是 Flink 容错机制的核心。原创 2024-06-10 10:43:23 · 1167 阅读 · 1 评论 -
详解 Flink 的状态管理
无状态的流处理:根据每一次当前输入的数据直接转换输出结果的过程,在处理中只需要观察每个输入的独立事件。例如, 将一个字符串类型的数据拆分开作为元组输出或将每个输入的数值加 1 后输出。Flink 中的基本转换算子 (map、filter、flatMap 等) 在计算时不依赖其他数据,所以都属于无状态的算子。有状态的流处理:根据每一次当前输入的数据和一些其他已处理的数据共同转换输出结果的过程,这些其他已处理的数据就称之为状态(state),状态由任务维护,可以被任务的业务逻辑访问。原创 2024-06-09 19:39:29 · 983 阅读 · 0 评论 -
详解 Flink 的 ProcessFunction API
相较于 map、filter 和 window 等特定的具体的操作而言,Flink 在底层 API 中提炼出一个统一通用的 process 操作,它是所有转换算子的一个概括性的表达,可以在对应的接口中自定义处理逻辑,而这一层接口就被叫作“处理函数”(ProcessFunction)原创 2024-06-09 16:58:43 · 1233 阅读 · 1 评论 -
详解 Flink 的时间语义和 watermark
Watermark 是一种使用延迟触发 window 执行来处理乱序数据的机制原理:当设置 Watermark = t 时 (即延迟时长为 t),则 Flink 每一次都会获取已经到达的数据中的最大的 EventTime,然后判断 maxEventTime - t 是否等于某一个窗口的触发时间,如果相等则认为属于这个窗口的所有数据都已经到达,这个窗口被触发执行关闭,也可能存在数据丢失。原创 2024-06-08 17:21:01 · 994 阅读 · 0 评论 -
详解 Flink 的 window API
Streaming 流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集,而 Flink window 是一种将无限数据切割为有限块进行处理的手段。window 是无限数据流处理的核心, window 将一个无限的 stream 拆分成有限大小的 ”buckets” 桶,然后可以在这些桶上做计算操作。原创 2024-06-08 13:00:45 · 1075 阅读 · 0 评论 -
详解 Flink 流处理 API
常用于模拟数据源进行测试//创建执行环境//自定义source的并行度必须设置为 1//使用通用 addSource 方法和自定义 SourceFunction 获取数据//输出//执行//自定义类实现 SourceFunction 接口并重写方法//数据获取逻辑:周期性循环获取10个传感器变化后的温度值//SourceFunction的并行度必须为 1,ParallelSourceFunction 接口可以多并行//Source程序执行,调用该方法获取数据。原创 2024-06-07 12:40:09 · 1166 阅读 · 0 评论 -
详解 Flink 的运行架构
算子链 (Operator Chain):并行度相同、同一个 slot 共享组且数据传输方式为 one-to-one 的算子们可以合并成为一个算子链,形成一个 Task 由一个线程执行。Task Slot:在 TaskManager 上拥有计算资源的一个固定大小的子集,一个 TaskManager 上的所有 Task Slot 会均分整个内存,所以任务之间不受影响。并行子任务 (Subtask):一个算子操作可以 “复制” 成多份分布到不同的节点去运行,每个节点所运行的任务称为该算子的一个并行子任务。原创 2024-06-06 18:32:33 · 994 阅读 · 0 评论 -
详解 Flink 的常见部署方式
Yarn 模式是指客户端把 Flink 应用提交给 Yarn 的 ResourceManager, Yarn 的 ResourceManager 会在 Yarn 的 NodeManager 上创建容器。YARN 的高可用是只启动一个 Jobmanager, 当这个 Jobmanager 挂了之后, YARN 会再次启动一个, 本质是利用的 YARN 的重试次数来实现的高可用。将编码好的 Flink maven 工程打成 jar 包,并将 jar 包上传到 flink 安装目录下的 lib 目录。原创 2024-06-06 12:54:55 · 1092 阅读 · 0 评论 -
Flink 入门案例介绍
在 IDEA 中创建一个 Maven 工程:FlinkTutorial。原创 2024-06-05 20:45:21 · 292 阅读 · 0 评论