spark 如何计算给定 window 间隔的 window 开始时间?
How spark calculates the window start time with given window interval?
考虑我有一个带有时间戳字段列的输入 df,并且将 window 持续时间(没有滑动间隔)设置为:
10 分钟
输入时间(2019-02-28 22:33:02)
window 形成为 (2019-02-28 22:30:02) to (2019-02-28 22:40:02)
8分钟
输入相同的时间(2019-02-28 22:33:02)
window 形成为 (2019-02-28 22:26:02) to (2019-02-28 22:34:02)
5分钟
输入相同的时间(2019-02-28 22:33:02)
window 形成为 (2019-02-28 22:30:02) to (2019-02-28 22:35:02)
14分钟
输入时间(2019-02-28 22:33:02)
window 形成为 (2019-02-28 22:32:02) to (2019-02-28 22:46:02)
所以,我的问题是:
给定输入ts,spark如何计算window的开始时间?
这在 O'Reilly 出版的“使用 Apache Spark 进行流处理”一书中的“了解间隔的计算方式”部分进行了解释:
"The window intervals are aligned to the start of the second/minute/hour/day that corresponds to the next" upper time magnitude of the time unit used."
在你的例子中,你总是使用分钟,所以下一个更高的时间量级是“小时”。因此它试图到达小时的开始。您的案例更详细(忘记 2 秒,这只是内部延迟):
- 10 分钟:22:40 + 10 + 10 -> 小时开始
- 8 分钟:22:34 + 8 + 8 + 8 -> 小时开始
- 5 分钟:22:35 + 5 + 5 + ... + 5 -> 小时开始
- 14 分钟:22:46 + 14 -> 小时开始
它独立于传入数据及其timestamp/event_time。
作为附加节点,较低的 window 边界 包含 而较高的 不包含 。在数学符号中,这看起来像 [start_time, end_time)
.
考虑我有一个带有时间戳字段列的输入 df,并且将 window 持续时间(没有滑动间隔)设置为:
10 分钟
输入时间(2019-02-28 22:33:02)
window 形成为 (2019-02-28 22:30:02) to (2019-02-28 22:40:02)
8分钟
输入相同的时间(2019-02-28 22:33:02)
window 形成为 (2019-02-28 22:26:02) to (2019-02-28 22:34:02)
5分钟
输入相同的时间(2019-02-28 22:33:02)
window 形成为 (2019-02-28 22:30:02) to (2019-02-28 22:35:02)
14分钟
输入时间(2019-02-28 22:33:02)
window 形成为 (2019-02-28 22:32:02) to (2019-02-28 22:46:02)
所以,我的问题是:
给定输入ts,spark如何计算window的开始时间?
这在 O'Reilly 出版的“使用 Apache Spark 进行流处理”一书中的“了解间隔的计算方式”部分进行了解释:
"The window intervals are aligned to the start of the second/minute/hour/day that corresponds to the next" upper time magnitude of the time unit used."
在你的例子中,你总是使用分钟,所以下一个更高的时间量级是“小时”。因此它试图到达小时的开始。您的案例更详细(忘记 2 秒,这只是内部延迟):
- 10 分钟:22:40 + 10 + 10 -> 小时开始
- 8 分钟:22:34 + 8 + 8 + 8 -> 小时开始
- 5 分钟:22:35 + 5 + 5 + ... + 5 -> 小时开始
- 14 分钟:22:46 + 14 -> 小时开始
它独立于传入数据及其timestamp/event_time。
作为附加节点,较低的 window 边界 包含 而较高的 不包含 。在数学符号中,这看起来像 [start_time, end_time)
.