06 2022 档案

摘要:与增量聚合函数不同,全窗口函数需要先收集窗口中的数据,并在内部缓存起来,等到窗口要输出结果的时候再取出数据进行计算。很明显,这就是典型的批处理思路了——先攒数据,等一批都到齐了再正式启动处理流程。这样做毫无疑问是低效的:因为窗口全部的计算任务都积压在了要输出结果的那一瞬间,而在之前收集数据的漫长过程 阅读全文
posted @ 2022-06-29 06:36 晓枫的春天 阅读(771) 评论(0) 推荐(0) 编辑
摘要:一般来说,Flink内置的水位线生成器就可以满足应用需求了。不过有时由于业务逻辑可能非常复杂,这时对水位线生成的逻辑也有更高的要求,开发人员就必须自定义实现水位线策略WatermarkStrategy了。在WatermarkStrategy中,时间戳分配器TimestampAssigner都是大同小 阅读全文
posted @ 2022-06-28 05:52 晓枫的春天 阅读(931) 评论(1) 推荐(0) 编辑
摘要:实现 SourceFunction 大多数情况下,Flink自身支持的数据源已经能够满足需要。但是凡事总有例外,如果遇到特殊情况,想要读取的数据源来自某个外部系统,而flink既没有预实现的方法、也没有提供连接器,那就只好自定义实现SourceFunction了。接下来创建一个自定义的数据源,实现S 阅读全文
posted @ 2022-06-27 07:55 晓枫的春天 阅读(875) 评论(0) 推荐(0) 编辑
摘要:定义了窗口分配器,只是知道了数据属于哪个窗口,可以将数据收集起来了;至于收集起来到底要做什么,其实还完全没有头绪。所以在窗口分配器之后,必须再接上一个定义窗口如何进行计算的操作,这就是所谓的“窗口函数”(window functions)。经窗口分配器处理之后,数据可以分配到对应的窗口中,而数据流经 阅读全文
posted @ 2022-06-24 11:56 晓枫的春天 阅读(2121) 评论(0) 推荐(0) 编辑
摘要:1、窗口API 1,1、按键分区(Keyed)和非按键分区(Non-Keyed) 在定义窗口操作之前,首先需要确定,到底是基于按键分区(Keyed)的数据流KeyedStream来开窗,还是直接在没有按键分区的DataStream上开窗。也就是说,在调用窗口算子之前,是否有keyBy操作。 按键分区 阅读全文
posted @ 2022-06-23 08:07 晓枫的春天 阅读(254) 评论(0) 推荐(0) 编辑
摘要:Flink中事件时间和水位线是做基于时间的处理计算的基础。之前我们已经了解了Flink中基本的聚合操作。在流处理中,我们往往需要面对的是连续不断、无休无止的无界流,不可能等到所有所有数据都到齐了才开始处理。所以聚合计算其实只能针对当前已有的数据——之后再有数据到来,就需要继续叠加、再次输出结果。这样 阅读全文
posted @ 2022-06-21 09:45 晓枫的春天 阅读(340) 评论(0) 推荐(0) 编辑
摘要:1、水位线生成原则 完美的水位线是“绝对正确”的,也就是一个水位线一旦出现,就表示这个时间之前的数据已经全部到齐、之后再也不会出现了。而完美的东西总是可望不可即,我们只能尽量去保证水位线的正确。如果对结果正确性要求很高、想要让窗口收集到所有数据,那么只能等了。由于网络传输的延迟不确定,为了获取所有迟 阅读全文
posted @ 2022-06-20 09:36 晓枫的春天 阅读(461) 评论(0) 推荐(0) 编辑
摘要:1、aggregate 首先看下 aggregate 函数签名 def aggregate[U: ClassTag](zeroValue: U)(seqOp: (U, T) => U, combOp: (U, U) => U): U 说明 参数zeroValue:seqOp运算符的每个分区的累积结果 阅读全文
posted @ 2022-06-17 10:09 晓枫的春天 阅读(156) 评论(0) 推荐(0) 编辑
摘要:对于数据处理系统的架构,最简单的方式就是单节点。当数据量增大,计算逻辑更加复杂多变时,可以考虑增加CPU、加大内存,也就是让一台机器变得性能更加强大从而提高计算性能——这是所谓的对称多处理架构(SMP),但是SMP存在问题很明显:所有CPU 完全平等,所有内存、总线资源共享,这就势必造成资源竞争;而 阅读全文
posted @ 2022-06-16 14:24 晓枫的春天 阅读(352) 评论(0) 推荐(0) 编辑
摘要:虽然flink 本身支持Standalone模式,无需其他框架也可以运行,但是这种方式降低了和其他第三方资源调度框架的耦合性,独立性很强。但是Flink是大数据计算框架,资源调度并非其强项;所以大多数时候需要让专业的框架做资源调度,比如说Yarn和K8s,这里我们就以Yarn 模式来演示Flink是 阅读全文
posted @ 2022-06-14 15:20 晓枫的春天 阅读(1429) 评论(0) 推荐(0) 编辑
摘要:1、部署模式 flink 支持3种部署模式: 会话模式(Session Mode) 单作业模式(Per-Job Mode) 应用模式(Application Mode) 三种模式区别在于:集群的生命周期&资源的分配方式,以及作业的main方法在客户端(Client)还是JobManager执行 1. 阅读全文
posted @ 2022-06-13 16:32 晓枫的春天 阅读(979) 评论(0) 推荐(0) 编辑
摘要:1、环境说明 系统环境:centos6.8 Java版本:jdk1.8 hadoop版本:hadoop2.7.2 flink版本:flink-1.13.0-bin-scala_2.12.tgz 本次以独立部署模式演示flink提交作业的2种方式 2、环境准备 安装 [hui@hadoop103 so 阅读全文
posted @ 2022-06-12 10:06 晓枫的春天 阅读(1396) 评论(0) 推荐(1) 编辑
摘要:环境说明 这段时间在梳理 flink,今天刚好测试之前的一个应用:在web ui 上提交任务报错了: 如图:这里指定了运行的主程序类名和并行度,然后点击submit 时,出错了 单纯从页面报错信息无法准确定位错误原因,此时可以通过 日志文件查看错误原因‘ [hui@hadoop103 ~]$ cd 阅读全文
posted @ 2022-06-12 07:24 晓枫的春天 阅读(1448) 评论(0) 推荐(1) 编辑
摘要:1、文件读取与保存 1.1、Text 文件 1)数据读取:textFile(String) 2)数据保存:saveAsTextFile(String) def main(args: Array[String]): Unit = { //1.创建SparkConf并设置App名称 val conf: 阅读全文
posted @ 2022-06-11 10:21 晓枫的春天 阅读(349) 评论(0) 推荐(0) 编辑
摘要:1、分区介绍 Spark目前支持Hash分区和Range分区,和用户自定义分区。Hash分区为当前的默认分区。分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle后进入哪个分区和Reduce的个数。说明:只有Key-Value类型的RDD才有分区器,非Key-Value类型的RDD 阅读全文
posted @ 2022-06-10 09:36 晓枫的春天 阅读(82) 评论(0) 推荐(0) 编辑
摘要:1、RDD缓存 RDD通过Cache或者Persist方法将前面的计算结果缓存,默认情况下会把数据以序列化的形式缓存在JVM的堆内存中。但是并不是这两个方法被调用时立即缓存,而是触发后面的action时,该RDD将会被缓存在计算节点的内存中,并供后面重用。 代码实现 /** * RDD 缓存 */ 阅读全文
posted @ 2022-06-08 18:58 晓枫的春天 阅读(209) 评论(0) 推荐(0) 编辑
摘要:1、Stage任务划分 DAG有向无环图:DAG(Directed Acyclic Graph)有向无环图是由点和线组成的拓扑图形,该图形具有方向,不会闭环。原始的RDD通过一系列的转换就形成了DAG,根据RDD之间的依赖关系的不同将DAG划分成不同的Stage,对于窄依赖,partition的转换 阅读全文
posted @ 2022-06-02 20:23 晓枫的春天 阅读(549) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示