【发布时间】:2017-01-09 05:18:58
【问题描述】:
在官方文档中只有一个简单的例子:
startTime 是相对于 1970-01-01 00:00:00 UTC 的偏移量 从哪个开始 窗口间隔。例如,为了让每小时滚动的窗口开始 15 分钟 过了一小时,例如12:15-13:15, 13:15-14:15... 提供
startTime为15 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())
输出:
[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'),
Row(start=u'2017-01-09 09:00:15', end=u'2017-01-09 09:00:20')]
那为什么?
【问题讨论】:
标签: apache-spark dataframe pyspark apache-spark-sql