2,StructuredStreaming的事件时间和窗口操作

推荐阅读:1,StructuredStreaming简介

使用Structured Streaming基于事件时间的滑动窗口的聚合操作是很简单的,很像分组聚合。在一个分组聚合操作中,聚合值被唯一保存在用户指定的列中。在基于窗口的聚合的情况下,对于行的事件时间的每个窗口,维护聚合值。

如前面的例子,我们运行wordcount操作,希望以10min窗口计算,每五分钟滑动一次窗口。也即,12:00 - 12:10, 12:05 - 12:15, 12:10 - 12:20 这些十分钟窗口中进行单词统计。12:00 - 12:10意思是在12:00之后到达12:10之前到达的数据,比如一个单词在12:07收到。这个单词会影响12:00 - 12:10, 12:05 - 12:15两个窗口。

结果表将如下所示。

import org.apache.spark.sql.streaming.Trigger import java.sql.Timestamp import org.apache.spark.sql.functions._ import spark.implicits._ val lines = spark.readStream.format("socket").option("host", "127.0.0.1").option("port", 9999).option("includeTimestamp", true).load() val words = lines.as[(String, Timestamp)].flatMap(line =>line._1.split(" ").map(word => (word, line._2))).toDF("word", "timestamp") val windowedCounts = words.withWatermark("timestamp", "30 seconds").groupBy(window($"timestamp", "30 seconds", "15 seconds"), $"word").count() val query = windowedCounts.writeStream.outputMode("Append").format("console").trigger(Trigger.ProcessingTime(5000)).option("truncate", "false").start() query.awaitTermination()

原文发布于微信公众号 - Spark学习技巧(bigdatatip)

原文发表时间:2018-05-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏个人随笔

C#图解教程第一章 C#和.NET框架

1.1 在.NET之前  C#发音:see shap  1.1.1 20世纪90年代后期的Windows编程   20世纪90年代后期各语言缺点:    1.纯...

31511
来自专栏Fundebug

几点建议帮你写出简洁的JS代码

1466
来自专栏Java帮帮-微信公众号-技术文章全总结

Java案例-贪吃蛇小游戏

Java案例-贪吃蛇小游戏 先来看看,这个游戏的截图。 ? 这里可以自定义难度系数(其实就是蛇自己移动的速度),共分10级。这里后面我会说实现方法,这都可以改...

4117
来自专栏tkokof 的技术,小趣及杂念

HGE系列之一 初窥门道

对于游戏开发有些兴趣的朋友,尤其是那些至今都扔不下2D、如我这般的志士同仁,想必对于HGE都有所耳闻,但如果要论及深入了解与运用,那恐怕就寥寥无几人了,而对于...

902
来自专栏tkokof 的技术,小趣及杂念

iTween 那些事儿(一)

  工作中用了不少时间的iTween,自己算是有些小小心得,在此随便写写,算作总结吧 :)

362
来自专栏Java与Android技术栈

使用Kotlin高效地开发Android App(一)

最近我们在做区块链相关的钱包项目,新的App使用全新的技术栈。在Android中我们使用Kotlin+RxJava+Android Architecture C...

542
来自专栏.NET技术

封装自己的dapper lambda扩展-设计篇

昨天开源了业务业余时间自己封装的dapper lambda扩展,同时写了篇博文《编写自己的dapper lambda扩展-使用篇》简单的介绍了下其使用,今天将分...

782
来自专栏我杨某人的青春满是悔恨

试水 Mac 开发 —— 代码生成器

国庆的时候写了个小工具来将 JSON 转化成 Model,也算是我的第一个 Mac App,今天重构了下,顺便跟大家分享下 Mac 开发有多不方便……

522
来自专栏技术分享

.NET框架设计(常被忽视的C#设计技巧)

阅读目录: 1.开篇介绍 2.尽量使用Lambda匿名函数调用代替反射调用(走进声明式设计) 3.被忽视的特性(Attribute)设计方式 4.扩展方法让你的...

2447
来自专栏游戏开发那些事

【Unity游戏开发】Lua中的os.date和os.time函数

  最近马三在工作中经常使用到了lua 中的 os.date( ) 和 os.time( )函数,不过使用的时候都是不得其解,一般都是看项目里面怎么用,然后我就...

914

扫码关注云+社区