
小坏讲大数据Flink第十一章
文章平均质量分 92
小坏讲大数据Flink
小坏讲微服务
熟悉各种微服务架构、一个菜鸟级别的后端小白、啥时候月薪过万呀、让你学习不在发愁的网站:https://www.e404e.cn
展开
-
Flink中Table API和SQL 完整使用下 (第十一章)
Flink的SQL、Table的实操原创 2022-10-26 17:01:26 · 587 阅读 · 0 评论 -
Flink中Table API和SQL 完整使用中 (第十一章)
系统函数尽管庞大,也不可能涵盖所有的功能;如果有系统函数不支持的需求,我们就需要用自定义函数(User Defined Functions,UDF)来实现了。事实上,系统内置函数仍然在不断扩充,如果我们认为自己实现的自定义函数足够通用、应用非常广泛,也可以在项目跟踪工具JIRA上向Flink开发团队提出“议题”(issue),请求将新的函数添加到系统函数中。Flink的Table API和SQL提供了多种自定义函数的接口,以抽象类的形式定义。原创 2022-10-26 16:54:46 · 1518 阅读 · 0 评论 -
Flink中Flink CEP 完整使用 (第十二章)
如图12-1所示,输入是不同形状的事件流,我们可以定义一个匹配规则:在圆形后面紧跟着三角形。那么将这个规则应用到输入流上,就可以检测到三组匹配的复杂事件。它们构成了一个新的“复杂事件流”,流中的数据就变成了一组一组的复杂事件,每个数据都包含了一个圆形和一个三角形。接下来,我们就可以针对检测到的复杂事件,处理之后输出一个提示或报警信息了。所以,CEP是针对流处理而言的,分析的是低延迟、频繁产生的事件流。它的主要目的,就是在无界流中检测出特定的数据组合,让我们有机会掌握数据中重要的高阶特征。原创 2022-10-25 11:44:25 · 887 阅读 · 1 评论 -
Flink中Table API和SQL 完整使用上 (第十一章)
在Flink提供的多层级API中,核心是DataStream API,这是我们开发流处理应用的基本途径;底层则是所谓的处理函数(process function),可以访问事件的时间信息、注册定时器、自定义状态,进行有状态的流处理。DataStream API和处理函数比较通用,有了这些API,理论上我们就可以实现所有场景的需求了。不过在企业实际应用中,往往会面对大量类似的处理逻辑,所以一般会将底层API包装成更加具体的应用级接口。怎样的接口风格最容易让大家接收呢?原创 2022-10-26 11:28:51 · 2031 阅读 · 0 评论 -
Flink中容错机制 完整使用 (第十章)
Flink作为一个大数据分布式流处理框架,必须要考虑系统的容错性,主要就是发生故障之后的恢复。Flink容错机制的核心就是检查点,它通过巧妙的分布式快照算法保证了故障恢复后的一致性,并且尽可能地降低对处理性能的影响。本章中我们详细介绍了Flink检查点的原理、算法和配置,并且结合一致性理论与Flink-Kafka的实际互连系统,阐述了如何用Flink实现流处理应用的端到端exactly-once状态一致性。这既是Flink底层原理的深入,也与之前的状态管理、水位线机制有联系和相通之处;原创 2022-10-09 12:19:50 · 1086 阅读 · 0 评论 -
Flink中状态编程 完整使用 (第九章)
在 Flink 中,状态始终是与特定算子相关联的;算子在使用状态前首先需要“注册”,其实就是告诉Flink当前上下文中定义状态的信息,这样运行时的 Flink 才能知道算子有哪些状态。状态的注册,主要是通过“状态描述器”(StateDescriptor)来实现的。状态描述器中最重要的内容,就是状态的名称(name)和类型(type)。我们知道Flink中的状态,可以认为是加了一些复杂操作的内存中的变量;原创 2022-10-09 11:50:09 · 1560 阅读 · 0 评论 -
Flink多流转换 完整使用 (第八章)
多流转换是流处理在实际应用中常见的需求,主要包括分流和合流两大类,本章分别做了详细讲解。在Flink中,分流操作可以通过处理函数的侧输出流(side output)很容易地实现;而合流则提供不同层级的各种API。最基本的合流方式是联合(union)和连接(connect),两者的主要区别在于union可以对多条流进行合并,数据类型必须一致;而connect只能连接两条流,数据类型可以不同。事实上connect提供了最底层的处理函数(process function)接口。原创 2022-09-14 16:45:02 · 888 阅读 · 2 评论 -
Flink处理函数 完整使用 (第七章)
Flink拥有非常丰富的多层API,而底层的处理函数可以说是最为强大、最为灵活的一种。广义上来讲,处理函数也可以认为是DataStream API中的一部分,它的调用方式与其他转换算子完全一致。处理函数可以访问时间、状态,定义定时操作,它可以直接触及流处理最为本质的组成部分。所以处理函数不仅是我们处理复杂需求时兜底的“大招”,更是理解流处理本质的重要一环。在本章中,我们详细介绍了处理函数的功能和底层的结构,原创 2022-09-08 10:24:12 · 653 阅读 · 0 评论 -
Flink中的时间和窗口 完整使用 (第六章)
具体实现上,水位线可以看作一条特殊的数据记录,它是插入到数据流中的一个标记点,主要内容就是一个时间戳,用来指示当前的事件时间。而它插入流中的位置,就应该是在某个数据到来之后;这样就可以从这个数据中提取时间戳,作为当前水位线的时间戳了。每条数据后插入一个水位线一般来说,Flink内置的水位线生成器就可以满足应用需求了。不过有时我们的业务逻辑可能非常复杂,这时对水位线生成的逻辑也有更高的要求,我们就必须自定义实现水位线策略WatermarkStrategy了。...............原创 2022-08-22 13:09:37 · 448 阅读 · 0 评论 -
DataStream API(基础篇) 完整使用 (第五章)
大多数情况下,前面的数据源已经能够满足需要。但是凡事总有例外,如果遇到特殊情况,我们想要读取的数据源来自某个外部系统,而flink既没有预实现的方法、也没有提供连接器,又该怎么办呢?那就只好自定义实现SourceFunction了。接下来我们创建一个自定义的数据源,实现SourceFunction接口。主要重写两个关键方法:run()和cancel()。run() 方法:使用运行时上下文对象( SourceContext )向下游发送数据;..................原创 2022-08-09 16:26:30 · 1548 阅读 · 1 评论 -
Flink运行时架构 完整使用 (第四章)
要解答这个问题,我们需要先梳理一下其他框架分配任务、数据处理的过程。对于Spark而言,是把根据程序生成的DAG划分阶段(stage)、进而分配任务的。而对于Flink这样的流式引擎,其实没有划分stage的必要。因为数据是连续不断到来的,我们完全可以按照数据流图建立一个“流水线”,前一个操作处理完成,就发往处理下一步操作的节点。如果说Spark基于MapReduce架构的思想是“数据不动代码动”,那么Flink就类似“代码不动数据流动”...原创 2022-08-09 15:34:00 · 1780 阅读 · 0 评论 -
Flink部署 完整使用 (第三章)
Flink支持多种不同的部署模式,还可以和不同的资源管理平台方便地集成。本章从快速启动的示例入手,接着介绍了Flink中几种部署模式的区别,并进一步针对不同的资源提供者展开讲解了具体的部署操作。在这个过程中,我们不仅熟悉了Flink的使用方法,而且接触到了很多内部运行原理的知识。关于Flink运行时组件概念的作用,以及作业提交运行的流程架构,我们会在下一章进一步详细展开。...原创 2022-08-09 11:56:38 · 1480 阅读 · 2 评论 -
Flink快速上手 完整使用 (第二章)
本章主要实现一个Flink开发的入门程序——词频统计WordCount。通过批处理和流处理两种不同模式的实现,可以对Flink的API风格和编程方式有所熟悉,并且更加深刻地理解批处理和流处理的不同。另外,通过读取有界数据(文件)和无界数据(socket文本流)进行流处理的比较,我们也可以更加直观地体会到Flink流处理的方式和特点。这是我们Flink长征路上的第一步,是后续学习的基础。有了这番初体验,想必大家会发现Flink提供了非常易用的API,基于它进行开发并不是难事。...原创 2022-08-09 09:57:46 · 939 阅读 · 0 评论 -
初识Flink 完整使用 (第一章)
Flink是第三代分布式流处理器,它的功能丰富而强大。主要介绍了Flink的源起和应用,引出了流处理相关的一些重要概念,并通过介绍数据处理架构发展演变的过程,为读者展示了Flink作为新一代分布式流处理器的架构思想。最后我们还将Flink与时下同样火热的处理引擎Spark进行了对比,详细阐述了Flink在流处理方面的优势。通过本章的学习,大家不仅可以初步了解Flink,而且能够建立起数据处理的宏观思维,这对以后学习框架中的一些重要特性非常有帮助。...原创 2022-08-08 23:37:56 · 1253 阅读 · 0 评论