【发布时间】:2021-05-06 09:58:45
【问题描述】:
我有一个包含时间戳列表的 spark 数据框(按 uid 分区,按时间戳排序)。现在,我想查询数据框以获取上一条或下一条记录。
df = myrdd.toDF().repartition("uid").sort(desc("timestamp"))
df.show()
+------------------------+-------+
|uid |timestamp |
+------------------------+-------+
|Peter_Parker|2020-09-19 02:14:40|
|Peter_Parker|2020-09-19 01:07:38|
|Peter_Parker|2020-09-19 00:04:39|
|Peter_Parker|2020-09-18 23:02:36|
|Peter_Parker|2020-09-18 21:58:40|
例如,如果我要查询:
ts=datetime.datetime(2020, 9, 19, 0, 4, 39)
我想获得 (2020-09-18 23:02:36) 的上一条记录,并且只有那一条。 怎么才能拿到上一张? 可以使用 withColumn() 和 diff 来做到这一点,但是有没有更聪明更有效的方法呢?我真的不需要计算所有事件的差异,因为它已经被订购了。我只想要上一个/下一个记录。
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql