相关疑难解决方法(0)

pyspark.sql.functions.window函数的startTime参数有什么作用?

在官方文档中,只有一个简单的示例:

startTime是相对于1970-01-01 00:00:00 UTC的偏移量,使用该偏移量可以启动窗口间隔。例如,为了使每小时的滚动窗口从每小时的15分钟开始,例如12:15-13:15、13:15-14:15 ...提供startTime15 minutes

但是我想知道它如何与所有参数一起工作。

例如:

ts_list = map(lambda x: datetime.datetime(2017, 1, 9, 9, 0, 10) + datetime.timedelta(seconds=x), range(30))
rdd = spark.sparkContext.parallelize(ts_list).map(lambda x: (x, 1))
df = spark.createDataFrame(rdd, schema=['dt', 'val'])
win = df.groupBy(window("dt", "5 seconds", '4 seconds', '3 seconds')).agg(sum("val").alias("sum"))
pprint.pprint(win.select(win['window']['start'].cast('string').alias('start'),
                         win['window']['end'].cast('string').alias('end')).collect())
Run Code Online (Sandbox Code Playgroud)

输出:

[Row(start=u'2017-01-09 09:00:19', end=u'2017-01-09 09:00:24'),                 
 Row(start=u'2017-01-09 09:00:35', end=u'2017-01-09 09:00:40'),
 Row(start=u'2017-01-09 09:00:27', end=u'2017-01-09 09:00:32'),
 Row(start=u'2017-01-09 09:00:07', end=u'2017-01-09 09:00:12'),
 Row(start=u'2017-01-09 09:00:31', end=u'2017-01-09 09:00:36'),
 Row(start=u'2017-01-09 09:00:39', end=u'2017-01-09 09:00:44'),
 Row(start=u'2017-01-09 09:00:11', end=u'2017-01-09 09:00:16'),
 Row(start=u'2017-01-09 09:00:23', end=u'2017-01-09 09:00:28'), …
Run Code Online (Sandbox Code Playgroud)

dataframe apache-spark apache-spark-sql pyspark

5
推荐指数
2
解决办法
1450
查看次数