window 聚合的数据怎么获取?

1FCSOFT 2020-06-13 03:24:16
从kafka流过来的数据有时间和设备的ID,设备的当前状态,每10秒统计前1分钟内接收到的信息的设备数,
val df = kafkaDataFrame
.withWatermark("datatime", "1 minute")
.groupBy(
window($"datatime", "1 minute", "10 seconds"),
$"devId"
).agg(max($"datatime"))

df .writeStream
.outputMode(OutputMode.Append)
.foreachBatch((df: Dataset[Row], batch: Long) =>{
val fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
val dayStr = LocalDateTime.now().format(fmt)
df.foreach(row => println(s"${dayStr}:${row.toSeq}"))
})
看到输出的数据不是最后一次窗口计算的,包含了前面好几次窗口汇总数据,我只要最后一次怎么办?
...全文
128 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
LinkSe7en 2020-06-15
  • 打赏
  • 举报
回复
这是structedStream的api。用stream(SparkStreamingContext)的API就可以了,缺点是无法使用event time

1,258

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧