Spark结构化流分组窗口-我希望第一个时间间隔从第一个时间戳开始

阿尔特姆·特鲁诺夫(Artem Trunov)

从在Spark 2.31(HDP 3.0)上使用窗口聚合的简单完整示例中,我可以看到Spark创建了与某个整数对齐的间隔。例如,这里我指定60秒windowDuration,Spark在最近的分钟开始第一个间隔:

>>> from pyspark.sql import functions as F
>>> df = spark.createDataFrame([("2016-03-11 09:00:07", 1),("2016-03-11 09:00:08", 1)]).toDF("date", "val")
>>> w = df.groupBy(F.window("date", "60 seconds")).agg(F.sum("val").alias("sum"))
>>> w.select(w.window.start.cast("string").alias("start"),w.window.end.cast("string").alias("end"), "sum").collect()
[Row(start='2016-03-11 09:00:00', end='2016-03-11 09:01:00', sum=2)]

有没有一种方法可以在第一个消息处开始间隔,即就我而言,我想拥有:

[Row(start='2016-03-11 09:00:07', end='2016-03-11 09:01:07', sum=2)]

部分

你去这里=>

from pyspark.sql import functions as F
from datetime import datetime

df = spark.createDataFrame([("2016-03-11 09:00:07", 1),("2016-03-11 09:00:08", 1)]).toDF("date", "val")

startSecond = datetime.strptime(df.head()[0], '%Y-%m-%d %H:%M:%S').second

w = df.groupBy(F.window("date", "60 seconds", "60 seconds", str(startSecond) + " seconds")).agg(F.sum("val").alias("sum"))

w.select(w.window.start.cast("string").alias("start"),w.window.end.cast("string").alias("end"), "sum").collect()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

包含第一个的结构化类型

Pyspark:获取一个时间窗口之间的行数

选择部分的第一个和最后一个时间戳

如何使用Spark Streaming读取流并在一个时间窗口内找到IP?

按两列分组时获取第一个记录更改时间戳 SQL Server

当按使用的时间窗口分组时,Spark 如何确定第一个窗口的 window.start?

保留特定列表的第一个时间戳

聚合日志将第一个时间戳设置为@timestamp

从表中删除重复的行,除了每天的第一个时间戳

正则表达式仅捕获每行的第一个时间戳

按键分组并使用 Spark/Scala 有效地找到在特定时间窗口中发生的事件的前一个时间戳

Kafka流和开窗以在一个时间窗口内保持计数

从数组数组中查找每天的第一个和最后一个时间戳

Spark 1.5.2:在一个时间范围内对DataFrame行进行分组

在一个时间窗口中查询结果,而在另一个时间窗口中不存在

格式化日期与时间,只要有一个时间上的日期

Spark(使用pyspark)使用一个数据框(结构化流)中的值查询静态数据框,并将第二个df中的行与第一个合并

如何在一个时间窗口中找到多个变量的同步增加?

硒:谷歌搜索结果在一个时间窗口内的西班牙语

根据第一个时间戳记录保留列表中的值

使用实例化视图,可以从“一个时间戳记”表生成“两个时间戳记”视图吗?

如何从第一个非 nan 值开始分组和计数?

指向结构数组中的第一个结构?

按某一列将数据帧压缩为包含第一个和最后一个时间戳以及值均值的行

如何按数组的第一个元素分组?

按组的第一个值分组值

按元组的第一个元素分组列表

根据第一个单词分组行

以第一个值不是数字滚动窗口