【发布时间】:2020-12-14 02:12:32
【问题描述】:
我需要通过时间戳列将一个数据帧拆分为多个数据帧。所以我会提供这个数据框应该包含的小时数,并将获得一组数据框,每个数据框都有指定的小时数。
方法的签名如下所示:
def splitDataframes(df: DataFrame, hoursNumber: Int): Seq[DataFrame]
我怎样才能做到这一点?
数据框的架构如下所示:
root
|-- date_time: integer (nullable = true)
|-- user_id: long (nullable = true)
|-- order_id: string (nullable = true)
|-- description: string (nullable = true)
|-- event_date: date (nullable = true)
|-- event_ts: timestamp (nullable = true)
|-- event_hour: long (nullable = true)
一些输入df字段:
event_ts, user_id
2020-12-13 08:22:00, 1
2020-12-13 08:51:00, 2
2020-12-13 09:28:00, 1
2020-12-13 10:53:00, 3
2020-12-13 11:05:00, 1
2020-12-13 12:19:00, 2
hourNumber=2 的一些输出 df 字段:
df1 event_ts, user_id
2020-12-13 08:22:00, 1
2020-12-13 08:51:00, 2
2020-12-13 09:28:00, 1
df2 2020-12-13 10:46:00, 3
2020-12-13 11:05:00, 1
df3 2020-12-13 12:48:00, 2
【问题讨论】:
-
为什么 2020-12-13 12:19:00 在单独的数据框中?距离 2020-12-13 10:53:00 不到 2 小时
-
嗯,我是从 2020-12-13 10:00:00 这样的偶数小时开始计算的,因此这个时间不属于这个数据帧。我将更新该值,以免造成混淆
-
我已经按照你的方式编辑了我的答案,看看它是否适合你?
标签: scala apache-spark apache-spark-sql