实战-Spark Structured Streaming
文章平均质量分 70
Spark Structured Streaming的实战
一 铭
公众号:大数据架构师修行之路
展开
-
Spark Structured Streaming实战--流df和静态df进行join操作
有时我们可能根据某些固定的数据集对流进行过滤、修改、扩充等操作。此时可以通过使用静态dataframe和流dataframe进行join操作来完成。这里的静态dataframe是指常规的dataframe,也就是从某个固定位置一次性读取的数据集,比如:hive或hdfs。允许流和静态dataframe进行操作,让spark structured streaming对流处理的功能变得更加灵活,可扩展性更强。场景架构这种场景的架构如下图所示:[spark structured streaming]---原创 2021-11-21 22:17:38 · 1979 阅读 · 0 评论 -
Spark Structured Streaming总体实现流程
Spark Structured Streaming总体实现流程我们根据一个简单的例子来查看一下Spark Structured Streaming的总体实现流程。一个简单的Structured Streaming的例子import pyspark.sql.functions as Flines = spark \ .readStream \ .format("socket") \ .option("host", "localhost") \ .option("po原创 2021-11-21 22:13:42 · 1049 阅读 · 0 评论 -
如何动态感知kafka的topic的添加
缘起有时当新增一个topic时,我们需要流处理任务能够动态感知新增的topic,这样我们可以有以下好处:(1)当新增topic时,我们不需要重启流数据处理任务。(2)可以对kafka中的数据进行分组,具有相同处理逻辑的数据放到具有相同模式(正则表达式)的topic中。这样,我们在处理时,就可以按组来编写处理任务的逻辑。spark对kafka动态感知的支持spark-3.x版本的structured streaming在连接kafka时,对kafka的topic名的设置可以指定一个模式,也就是使用s原创 2021-10-19 07:34:15 · 839 阅读 · 0 评论 -
Spark Structured Streaming实战--对同一流数据进行多种计算
对同一流数据进行多种计算有时我们可能需要针对同一个流的数据源来进行多种计算,比如:使用同一流数据来计算多个指标,并把计算结果保存到不同的地方。此时,就需要对同一个来源的流使用不同的计算逻辑,并把结果写出到不同的存储系统中。Spark Strucutured Streaming提供了针对同一个数据源流进行不同逻辑计算并对结果进行不同的sink的方式。这就是在Spark Strucutured Streaming的writestream中提供的foreach和foreachBatch接口。Foreach原创 2021-01-27 21:33:58 · 1241 阅读 · 0 评论 -
Spark Structured Streaming实战--使用滑动窗口(Sliding windows)
滑动窗口比翻滚窗口要复杂一些,滑动窗口的窗口之间有重叠的区域,这个区域会被计算两次。那么,为什么要这么设计呢?滑动窗口通常用于流量控制,资源保护等场景,它可以让控制更加平滑。介绍顾名思义,该窗口非固定,而是滑动的。在滑动窗口中,元组被分组在一个窗口中,该窗口根据指定的间隔在数据流中滑动。滑动窗口可以包含重叠的数据,一个数据可以属于多个滑动窗口。可以认为窗口每次的滑动就是产生了一个新的窗口。就需要开始该窗口的计算。当然若前一个窗口还没有计算还会继续计算,所以就会产生一些重叠的区域。关于滑动窗口的详细的原原创 2021-01-25 20:06:06 · 1007 阅读 · 0 评论 -
Spark Structured Streaming实战--滚动窗口(tumbling windows)的使用
翻滚窗口(tumbling windows)实战Spark Structured Streaming有两种窗口,在 1.2《窗口的基本原理》一节中已经进行了介绍。本文介绍翻滚窗口的实战。简介tumbling windows的计算逻辑很简单,就是把时间划分成一个个的固定的时间段(时间窗口),这些时间窗口彼此之间没有交集。每个时间段的开始时刻时,就从新开始计算,本时间段结束时,该时间窗口的结果就不会再改变了,接下来从新开始下一个 时间窗口的计算。基本使用在实际中,翻滚窗口有很多使用场景,比如:根据用户原创 2021-01-21 20:45:13 · 945 阅读 · 0 评论 -
Structured Streaming窗口的基本原理
Structured Streaming窗口的基本原理通过结构化流(structured streaming)来进行滑动窗口上的聚合操作和分组聚合操作非常相似。在进行分组聚合操作时,在用户指定的分组列中为每个唯一值维护汇总值(例如计数)。在基于窗口的聚合的情况下,行事件时间所属的每个窗口都会维护聚合值。 让我们通过一个例子来了解这一点。滚动窗口(tumbling windows)滚动窗口将时间划分为不重叠的连续时间段。比如定义:window($"timestamp", "5 minutes")就原创 2021-01-14 16:20:31 · 809 阅读 · 0 评论 -
Spark Structured Streaming概述
Spark Structured Streaming概述结构化流(Structured Streaming)是基于Spark SQL引擎的流处理引擎,它具有可扩展和容错性。可以使用类似批数据处理的表达方式来处理流式数据。Spark SQL引擎会增量和连续的运行处理代码,并当流数据持续到达时更新最后结果。在Structured Streaming中可以使用Scala、Java、Python或R中的Dataset/DataFrame API来处理流聚合、事件时间窗口、流到批处理连接等。这些代码的执行都在相同原创 2021-01-07 21:44:57 · 594 阅读 · 0 评论