flink实战
文章平均质量分 85
如果你对flink感兴趣,想要学习如何在数据流上进行有状态计算,那么这个flink专栏是你的最佳选择。这里有flink的基础知识、入门教程、常见问题和解答,让你快速上手flink,体验流处理的乐趣。了解flink的发展历程、社区动态和未来规划,与flink的爱好者和专家交流互动,拓展你的视野和思路。
enjoy编程
Stay hungry, stay foolish.(求知若饥,虚心若愚。)10+IT行业老兵,熟悉大数据处理,分布式编程, 喜欢使用java、python解决工作、生活中的问题
展开
-
Dinky: 实时即未来,让 Flink SQL 纵享丝滑--如何本地编译、运行
实时即未来,Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑。Dinky 是一个开箱即用、易扩展,以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架的一站式实时计算平台,致力于流批一体和湖仓一体的探索与实践。本文讲解window 10环境下,如何在本地编译、运行Dinky原创 2023-06-13 13:16:33 · 2092 阅读 · 0 评论 -
数据湖Data Lakehouse支持行级更改的策略:COW、MOR、Delete+Insert
COW:写时复制,MOR:读时合并,Delete+Insert:保证同一个主键下仅存在一条记录,将更新操作转换为Delete操作和Insert操作COW和MOR的对比如下图,而Delete+Insert在StarRocks主键模型中用到。目前COW、MOR在三大开源数据湖项目的使用情况详见下文原创 2023-04-29 11:49:01 · 1069 阅读 · 0 评论 -
Paimon: Streaming data lake 数据湖项目的后起之秀
Paimon 是流数据湖平台,具有高速数据摄取、变更日志跟踪和高效的实时分析能力数据湖是大数据近年来的网红项目,熟知的开源数据湖三剑客 `Apache hudi`、`Apache iceberg` 、`Databricks delta` 近年来野蛮生长,目前各自背后也都有商业公司支持,投入了大量的人力物力去做研发和宣传。`Paimon`的前身是`flink-table-store`即`FTS`原创 2023-04-28 19:22:09 · 1769 阅读 · 1 评论 -
Flink on Zeppelin使用示例及填坑记录
本文记录了自己在学习Flink on Zeppelin的使用示例及填坑记录原创 2022-01-18 22:45:00 · 1450 阅读 · 1 评论 -
使用PyFlink, 如何在 zeppelin 里高效的开发 PyFlink Job?
大家都知道PyFlink 的开发环境不容易搭建,稍有不慎,PyFlink 环境就会乱掉,而且很难排查原因。本文使用miniconda、conda-pack、mamba分别制作JobManager 上的 PyFlink Conda 环境、TaskManager 上的 PyFlink Conda 环境,然后在 Zeppelin 里使用 PyFlink 以及指定 Conda 环境,这样就可以在一个 Yarn 集群里同时使用多个版本的 PyFlink。原创 2022-01-17 20:45:00 · 2284 阅读 · 4 评论 -
Flink--Streaming Warehouse 流式数仓的概念、目标及实现路径
在 Flink Forward Asia 2021 的主题演讲中,Apache Flink 中文社区发起人、阿里巴巴开源大数据平台负责人王峰提出了 Flink 下一步的发展方向——流式数仓(Streaming Warehouse,简称 Streamhouse),Flink 要从 Stream Processing 走向 Streaming Warehouse 去覆盖更大的场景,帮助开发者解决更多问题。本文针对流式数仓的概念,实现的目标,实现的方式进行梳理,讲解。原创 2022-01-10 22:15:00 · 2611 阅读 · 0 评论 -
Flink--Hybrid Source提出的动机及实现原理介绍
在实践中,许多Flink作业需要按顺序从多个数据源读取数据,具体有如下2个场景:Change Data Capture (CDC): 用户可以将数据的快照存储在HDFS/S3中,数据的更新日志存储在数据库binlog或Kafka中;机器学习特征回填: 当向模型添加新特性时,需要从几个月前到现在的原始数据计算该特性。在大多数情况下,历史数据和实时数据分别存储在两种不同的存储系统中,例如HDFS和Kafka。为了平滑地支持这种场景,Flink引入的HybridSource混合源原创 2022-01-10 19:45:00 · 2034 阅读 · 0 评论 -
FlinkCEP Pattern Recognition,一文让你明白如何使用
FlinkCEP Pattern Recognition是什么?2016年12月,国际标准化组织(ISO)发布了新版SQL标准,其中包括Row Pattern Recognition in SQL (ISO/IEC TR 19075-5:2016)。Row Pattern Recognition 标准允许Flink使用 MATCH_RECOGNIZE clause合并CEP和SQL API,以便在SQL中处理复杂的事件。原创 2021-12-14 21:37:48 · 1232 阅读 · 0 评论 -
FlinkCEP SQL使用完整代码示例
使用FlinkCEP SQL分析股票交易价格的变化。将某公司的股票交易价格有连续多个下降后有一个提升作为一个事件,并输出事件的ID集合、平均价格及事件的初始时间、价格最低的时间、价格提升的时间。不仅给出完整的代码示例,而且针对SQL中使用的函数、语义进行了讲解原创 2021-12-10 22:00:00 · 1278 阅读 · 5 评论 -
FlinkCEP的底层理论:NFA-b Automaton原理介绍
FlinkCEP是基于[《Efficient Pattern Matching over Event Streams》]这篇论文的思想实现的。该论文提出了一种在事件流上进行高效模式匹配的方法,即带匹配缓存的非确定有限自动机【Non-deterministic finite automaton】,又称为NFA-b。本文针对NFA-b的原理及FlinkCEP的实现进行介绍原创 2021-12-09 18:46:54 · 1255 阅读 · 0 评论 -
FlinkCEP模式API介绍及入门案例
基于FlinkCEP的模式API,可以定义要从输入流中提取的复杂模式序列【pattern sequence】。每个复杂模式序列由多个简单模式组成. 模式分为单个模式和组合模式,其中单个模式可以是单例模式或者循环模式。组合模式把多个单个模式组合到一起,由一个初始化模式(.begin(...))开头,可以看作是简单模式的有向图,基于用户指定的条件,从一个模式转换到下一个模式原创 2021-12-08 22:15:00 · 465 阅读 · 0 评论 -
FlinkCEP 介绍及入门案例 (基于flink 1.13.x的源码)
CEP:先捕获各种细微的事件(基础事件或简单事件),然后通过分析整理【事件模式】,找出更有意义的事件(复合事件),最后决定采取什么行动。其中事件的分析整理以找出更有意义的事件,是CEP的核心,也是最困难的地方。FlinkCEP(Complex event processing for Flink) 是基于Flink实现的复杂事件处理库. 在无界流或有界流中检测出事件模式【event pattern】,从而挖掘出数据的价值。本文讲解FlinkCEP的基本概念、特征、应用场景及入门案例原创 2021-12-08 19:15:00 · 1986 阅读 · 0 评论 -
flink--Over Aggregation 使用讲解及源码示例
1. 什么是Over AggregationOVER聚合: 有序行范围内的每个输入行计算聚合值与GROUP BY聚合相比,OVER聚合不会将每个组的结果行数减少到一行OVER聚合为每个输入行生成新的列,表示聚合值2. Over Aggregation语法SELECT agg_func(agg_col) OVER ( [PARTITION BY col1[, col2, ...]] ORDER BY time_col range_definition), ...原创 2021-11-25 21:30:00 · 1304 阅读 · 0 评论 -
flink-- Window Top-N使用讲解及源码示例
1. 什么是Window Top-NWindow Top-N是一个特殊的Top-N,它返回每个窗口和其他分区键的N个最小或最大值。对于流查询,与连续表上的常规top-N不同,窗口top -N不产生中间结果,只产生最终结果,即一个窗口中包含数据集的top -N记录。Top-N窗口在不再需要时清除所有中间状态,因此如果用户不需要更新每条记录的结果,窗口Top-N查询具有更好的性能通常窗口Top-N与窗口聚合一起使用2. window Top-N语法Window Top-N要求PARTITION原创 2021-11-25 21:00:00 · 504 阅读 · 0 评论 -
flink--Window Aggregation【TVF 聚合 及 分组窗口聚合 】讲解及源码示例
1. 什么是Window TVF AggregationWindow TVF Aggregation 是指 基于应用Window TVF函数的分组统计,语法如下:SELECT ...FROM <windowed_table> -- relation applied windowing TVFGROUP BY window_start, window_end, ...在GROUP BY子句中定义的窗口聚合包含应用于窗口TVF函数产生的新关系的“window_start”和“window原创 2021-11-25 20:15:00 · 1276 阅读 · 0 评论 -
flink--Window TVF【窗口化表值函数】讲解及源码示例
1. 什么是Window TVFWindowing TVFs: Flink定义的多态表函数(简称PTF),用于将表中的元素划分到定义的窗口中窗口化TVFs替代了 legacy Grouped Window Functions。windows TVFs更符合SQL标准,更强大的支持复杂的窗口计算,例如Window TopN, Window Join【在1.13.x中还不支持】。Grouped Window Functions【分组窗口函数】只能支持窗口聚合。PTF 【Polymorphi原创 2021-11-25 19:45:00 · 2869 阅读 · 0 评论 -
flink之核心抽象--Window窗口及窗口操作全面详解
1. Windows1.1. 基本概念窗口是处理无限流的核心。窗口将流划分为固定大小的“桶”,方便程序员在上面应用各种计算。Window操作是流式数据处理的一种非常核心的抽象,它把一个无限流数据集分割成一个个有界的Window(或称为Bucket),然后就可以非常方便地定义作用于Window之上的各种计算操作。1.2. 窗口分类Window分为两类,窗口程序的通用结构详见下面,主要区别是针对Keyed Window,需要首先使用keyBy将stream转化为Keyed stream,然后使用win原创 2021-11-19 21:00:00 · 1296 阅读 · 0 评论 -
Apache Calcite 在 Flink 中的应用
Apache Calcite什么是calciteApache Calcite 是一个动态数据的管理框架,可以用来构建数据库系统的语法解析模块,是高性能数据库的基础Standard SQL:行业标准的SQL解析器、验证器和JDBC驱动程序Query optimization: 用关系代数【relational algebra】表示查询,使用规划规则【planning rules】进行转换,并根据成本模型进行优化Any data, anywhere:连接到第三方数据源,浏览元数据,并通过下推进行数据原创 2021-10-12 11:43:50 · 888 阅读 · 0 评论 -
Flink Catalogs 如何玩转元数据中心?
产生背景在flink 1.11.0 之前,用户如果依赖 Flink 的 source/sink 读写关系型数据库表或者读取 changelog 时,必须要手动创建对应的 schema。但是这样会有一个问题,当数据库中的 schema 发生变化时,也需要手动更新对应的 Flink 任务以保持类型匹配,任何不匹配都会造成运行时报错使作业失败。操作冗余且繁琐,体验极差。实际上对于任何和 Flink 连接的外部系统都可能有类似的上述问题!1.11.0 版本后,用户使用 Flink SQL 时可以自动获取表的原创 2021-10-08 15:52:05 · 1417 阅读 · 0 评论 -
Hudi on Flink上手使用总结
解决问题hudi 基于 mini-batch 的增量计算模型可以提升部分场景的时延、节省计算成本。随着流计算和实时数仓的普及,Hudi 社区也在积极的拥抱变化,通过流计算对原有基于 mini-batch 的增量计算模型不断优化演进:在 0.7 版本引入了流式数据入湖,在 0.9 版本支持了原生的 CDC format。hudi编译环境:flink 1.13.2, YARN 3.1.1git clone https://github.com/apache/hudi.git && c原创 2021-09-30 11:50:19 · 1207 阅读 · 0 评论 -
Flink CDC 2.x changlog格式的使用【监听MySQL表变化并写入kafka示例】
为什么数据先进入kafka?MySQL 数据通过 Flink CDC 进入到 Kafka。原因如下:为了实现多个实时任务复用 MySQL 过来的数据,避免多个任务通过 Flink CDC 接 MySQL 表以及 Binlog,对 MySQL 库的性能造成影响。测试环境flink 1.3.2flink cdc 2.0.2依赖的jar:flink-sql-connector-kafka_2.11-1.13.2.jarflink-format-changelog-json-2.0.2.j原创 2021-09-28 18:01:16 · 2160 阅读 · 0 评论 -
Flink CDC 2.x 让一切变得美好
本文基于阿里巴巴高级开发工程师徐榜江 (雪尽) 7 月 10 日在北京站 Flink Meetup 分享的《详解 Flink-CDC》整理。《详解 Flink-CDC》深入讲解了最新发布的 Flink CDC 2.0.0 版本带来的核心特性,包括:全量数据的并发读取、checkpoint、无锁读取等重大改进。项目地址文档地址详解Flink-CDC PPTCDC什么是CDCCDC 的全称是 Change Data Capture ,在广义的概念上,只要是能捕获数据变更的技术,我们都可以称之为 C原创 2021-09-28 11:55:34 · 3796 阅读 · 1 评论 -
flink 如何通过JdbcDialect扩展jdbc connector
1 前言JDBC connect允许使用JDBC驱动程序从任何关系数据库读取数据或将数据写入数据库Flink jdbc connector已经为依赖于jdbc进行操作的数据库系统提供了非常完善的功能。对于扩展只需要扩展其Dialect即可。目前官方版本只实现了三种JDBC Dialect:详见参见:flink jdbc connectorsMySQLPostgreSQLDerby2 如何扩展注意: 因为AbstractJdbcRowConverter是package可见的,所以继承此类原创 2021-09-18 16:46:16 · 1010 阅读 · 0 评论 -
flink sql 使用Table Function或Array Expansion 实现列转行(附源码实现)
在使用flink sql处理数据时,经常会遇到一列转多行的需求。本文讲解在flink sql 中,使用Table Function或Array Expansion 实现列转行,并提供实现的源码示例原创 2021-09-17 14:36:26 · 3181 阅读 · 0 评论 -
Flink中Checkpoint和Savepoint的区别
1 概念1.1 CheckpointIn order to make state fault tolerant, Flink needs to checkpoint the state. Checkpoints allow Flink to recover state and positions in the streams to give the application the same semantics as a failure-free execution.为了使状态容错,Flink需要对状态原创 2021-09-16 15:31:43 · 733 阅读 · 0 评论 -
基于 FLINK SQL 的实时数据打宽的三种方式
本文根据 《【Flink 1.12】基于 FLINK SQL 的实时数据打宽》中的内容整理而成1 实时数据打宽利⽤ Flink SQL 打宽实时数据,共有以下方式:双流join (Regular join)区间join (Interval join)时态表join (Temporal join)1.1 双流join支持 INNER JOIN, LEFT JOIN, RIGHT JOIN,FULL OUTER JOIN语法, 语义 均和传统批 SQL 一致左右流都会触发结果更新状态持原创 2021-09-15 11:53:20 · 1457 阅读 · 2 评论 -
Flink的类加载机制、参数配置及具体任务执行时的类加载代码讲解
基于flink 1.13.2代码分析1 flink类加载1.1 相关的配置flink类加载相关的配置配置项默认值类型描述classloader.check-leaked-classloadertrueBoolean如果一个作业的用户类加载器在作业终止后使用,则装入类的尝试将失败。这通常是由滞留线程或行为不当的库泄漏类加载器造成的,这也可能导致其他作业使用类加载器。只有当泄漏阻止了进一步的作业运行时,才应该禁用此检查.classloader.fail-on-meta原创 2021-09-14 15:56:38 · 2697 阅读 · 1 评论 -
flink on yarn的实现及交互过程
1 yarn 基本架构yarn是一个资源管理与调度平台,不仅hadoop跑在上面,flink也可以直接向yarn申请资源并运行上去。yarn使用cgroup隔离资源,实现了container。Resource Manager组件管理集群资源。Node Manager组件管理1台机器,在上面运行Container。Container是一个具体容器,分配一定的CPU、内存、磁盘资源,在上面运行具体的任务2 向yarn提交应用向yarn提交应用的交互过程,大体如下3 Flink on Yar原创 2021-09-10 15:21:11 · 967 阅读 · 1 评论 -
Flink在YARN上支持的三种部署方式及使用方式
前提安装yarn集群并启动配置HADOOP_CLASSPATH环境变量export HADOOP_CLASSPATH=`hadoop classpath`Flink在YARN上支持的部署方式对于生产使用,建议Per-job or Application Mode部署Flink应用程序,因为这些模式为应用程序提供了更好的隔离。详见参见: flink on yarn Application ModeApplication Mode将在YARN上启动一个Flink集群,其中应用程序j原创 2021-09-10 12:09:45 · 3135 阅读 · 1 评论 -
flink针对hadoop 3.x的支持及集成方式
hadoop版本的支持Flink自1.11.0 版本开始,已经支持了hadoop 3.x,具体来讲就是将 HADOOP_CLASSPATH 配置成运行机器上的hadoop3 相关jar包即可YARN上的Flink是针对Hadoop 2.4.1编译的,支持所有的Hadoop版本>= 2.4.1,包括Hadoop 3.x。与hadoop集成参见:https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/deplo原创 2021-04-25 16:33:21 · 5457 阅读 · 2 评论