
0基础学习PyFlink
文章平均质量分 87
0基础学习PyFlink
breaksoftware
这个作者很懒,什么都没留下…
展开
-
0基础学习PyFlink——水位线(watermark)触发计算
在和中,我们发现如果窗口中元素个数没有把窗口填满,则不会触发计算。为了解决长期不计算的问题,我们引入了在和的方案。但是这个方案引入另外一个问题,就是每次处理数据可能不尽相同。这是因为它们使用了“处理时间”(Processing Time)来作为窗口划分的参考系,而每次程序处理时间会根据当前负载情况有很大的不同。这样我们对同一批数据做处理时,可能会得出不同的Window切分方案。于是我们引入方案。原创 2023-11-13 14:31:46 · 740 阅读 · 0 评论 -
0基础学习PyFlink——使用datagen生成流式数据
在研究Flink的水印(WaterMark)技术之前,我们可能需要Flink接收到流式数据,比如接入Kafka等。这就要求引入其他组件,增加了学习的难度。而Flink自身提供了datagen连接器,它可以用于生成流式数据,让问题内聚在Flink代码内部,从而降低学习探索的难度。本节我们就介绍如何使用datagen生成数据。我们可以使用option方法控制生成的一些规则,主要分为“字段级规则”和“表级规则”。顾名思义,字段级规则是指该规则作用于具体哪个字段,这就需要指明字段的名称——fields.col_n原创 2023-11-02 21:59:07 · 966 阅读 · 0 评论 -
0基础学习PyFlink——事件时间和运行时间的窗口
在一文中,我们使用的是运行时间(Tumbling而得到的结果也是不稳定的。这是因为每次运行时,CPU等系统资源的繁忙程度是不一样的,这就影响了最后的运行结果。为了让结果稳定,我们可以不依赖运行时间(ProcessingTime),而使用不依赖于运行环境,只依赖于数据的事件时间(EventTime)。一般,我们需要大数据处理的数据,往往存在一个字段用于标志该条数据的“顺序”。这个信息可以是单调递增的ID,也可以是不唯一的时间戳。我们可以将这类信息看做事件发生的时间。原创 2023-11-01 18:41:39 · 923 阅读 · 0 评论 -
0基础学习PyFlink——时间滑动窗口(Sliding Time Windows)
在我们介绍了不会有重复数据的时间滚动窗口。本节我们将介绍存在重复计算数据的时间滑动窗口。关于滑动窗口,可以先看下。下图就是个数滑动窗口示意图。我们看到个数滑动窗口也会因为窗口内数据不够而不被触发。但是时间滑动窗口则可以解决这个问题,我们只要把窗口改成时间类型即可。相应的代码我们参考,只要把TumblingProcessingTimeWindows改成SlidingProcessingTimeWindows,并增加一个偏移参数(Time.milliseconds(1))即可。原创 2023-11-01 01:45:16 · 907 阅读 · 0 评论 -
0基础学习PyFlink——时间滚动窗口(Tumbling Time Windows)
在一文中,我们发现如果窗口内元素个数没有达到窗口大小时,计算个数的函数是不会被调用的。如下图中红色部分那么有没有办法让上图中(B,2)和(D,5)也会被计算呢?这就可以使用本节介绍的时间滚动窗口。它不依赖于窗口中元素的个数,而是窗口的时间,即窗口时间到了,计算就会进行。我们稍微修改下的例子,让元素集中在“A”上。原创 2023-11-01 01:19:45 · 917 阅读 · 2 评论 -
0基础学习PyFlink——个数滑动窗口(Sliding Count Windows)
在一文中,我们介绍了滚动窗口。本节我们要介绍滑动窗口。原创 2023-10-31 22:15:26 · 733 阅读 · 0 评论 -
0基础学习PyFlink——个数滚动窗口(Tumbling Count Windows)
之前的案例中,我们的Source都是确定内容的数据。而Flink是可以处理流式(Streaming)数据的,就是数据会源源不断输入。对于这种数据,我们称之为无界流,即没有“终止的界限”。但是程序在底层一定不能等着无止境的数据都传递结束再处理,因为“无止境”就意味着“终止的界限”触发计算的条件是不存在的。那么我们可以人为的给它设置一个“界”,这就是我们本节介绍的窗口。原创 2023-10-31 21:45:54 · 770 阅读 · 0 评论 -
0基础学习PyFlink——使用DataStream进行字数统计
在一文中,我们看到Hadoop在处理大数据时的MapReduce过程。本节介绍的DataStream API,则使用了类似的结构。原创 2023-10-31 15:49:46 · 768 阅读 · 0 评论 -
0基础学习PyFlink——用户自定义函数之UDTAF
PyFlink UDF UDTF UDAF UDTAF原创 2023-10-27 19:12:19 · 1177 阅读 · 0 评论 -
0基础学习PyFlink——用户自定义函数之UDAF
在前面几篇文章中,我们学习了非聚合类的用户自定义函数。这节我们将介绍最简单的聚合函数UDAF。原创 2023-10-27 02:46:52 · 1119 阅读 · 0 评论 -
0基础学习PyFlink——用户自定义函数之UDTF
在中,我们讲解了UDF。本节我们将讲解表值函数——UDTF。原创 2023-10-26 22:46:06 · 1462 阅读 · 0 评论 -
0基础学习PyFlink——用户自定义函数之UDF
我们可以把它看成是一个新表的结构描述,即一行只有一个字段——lower_word,它的类型也是String。新表的字段也在udf的result_type中定义了,它是String类型的lower_word。后面我们对新表就要聚合统计这个新的字段,而不是老表中的字段。map方法中,我们会给UDF修饰的方法传入原始表tab_source每行中的word字段的值。input_types我们设置成[DataTypes.STRING()],即该数组中只有一个参数,也表示修饰的方法只有一个参数,类型是String。原创 2023-10-26 21:32:32 · 977 阅读 · 0 评论 -
0基础学习PyFlink——不可以用UDTAF装饰器装饰function的原因分析
在很多案例中,我们看到udf、udtf和udaf几个装饰器修饰function但是没有见到udtaf修饰function的案例,比如这是因为。原创 2023-10-25 22:16:33 · 902 阅读 · 0 评论 -
0基础学习PyFlink——使用Table API实现SQL功能
在一文中,我们讲到如何通过定义Souce、Sink和Execute三个SQL,来实现数据读取、清洗、计算和入库。如下图所示SQL是最高层级的抽象,在它之下是Table API。本文我们会将例子中的SQL翻译成Table API来实现等价的功能。原创 2023-10-24 22:56:21 · 833 阅读 · 0 评论 -
0基础学习PyFlink——流批模式在主键上的对比
假如我们将中的模式从批处理(batch)改成流处理(stream),则其在print连接器上产生的输出是不一样。原创 2023-10-24 00:51:03 · 627 阅读 · 0 评论 -
0基础学习PyFlink——使用PyFlink的Sink将结果输出到Mysql
在一文中,我们将字数统计结果输出到终端。本文将模拟生产环境,将结果输出到Mysql数据库。原创 2023-10-23 23:29:40 · 376 阅读 · 0 评论 -
0基础学习PyFlink——使用PyFlink的Sink将结果输出到外部系统
在一文中,我们直接执行了Select查询操作,在终端中直接看到了查询结果。在生产环境,我们往往要将计算结果保存到外部系统中,比如Mysql等。这个时候我们就要使用Sink。原创 2023-10-23 23:10:07 · 916 阅读 · 0 评论 -
0基础学习PyFlink——使用PyFlink的SQL进行字数统计
在和这两篇文章中,我们使用了Python基础函数实现了字(符)统计的功能。这篇我们将切入PyFlink,使用这个框架实现字数统计功能。原创 2023-10-23 22:52:48 · 667 阅读 · 0 评论 -
0基础学习PyFlink——模拟Hadoop流程
学习大数据还是绕不开始祖级别的技术hadoop。我们不用了解其太多,只要理解其大体流程,然后用python代码模拟主要流程来熟悉其思想。还是以单词统计为例,如果使用hadoop流程实现,则如下图。为什么要搞这么复杂呢?顾名思义,“大数据”意味着庞大的数据量需要计算。“更多的可并行执行的流程”意味着不同计算流程之间数据不存在前后依赖,这个也是GPU计算的基础。在这个前提下,我们又有足够多的处理器,则可以提升计算的并行度,大大缩短计算的时间。沿着这个思路,我们该怎么做呢?以上图所表达的数据为例。原创 2023-10-19 23:14:02 · 1188 阅读 · 0 评论 -
0基础学习PyFlink——Map和Reduce函数处理单词统计
在很多讲解大数据的案例中,往往都会以一个单词统计例子来抛砖引玉。本文也不免俗,例子来源于PyFlink的,我们会通过几种方式统计不同的单词出现的个数,从而达到循序渐进的学习效果。原创 2023-10-18 19:20:10 · 990 阅读 · 0 评论