我在 spark 数据框中有最终记录(连接和过滤后)。我需要比较连续行的(按键分区)列值,并根据需要更改 e_date 列值的条件,例如:
sample table
key1 key 2 col1 col2 s_date e_date
a 1 cv1 cv2 2014 2099
a 1 cv3 cv2 2016 2099
b 2 cv5 cv6 2016 2099
b 2 cv5 cv6 2016 2099
final table should look like
key1 key 2 col1 col2 s_date e_date
a 1 cv1 cv2 2014 2015 (next records s_date-1)
a 1 cv3 cv2 2016 2099
b 2 cv5 cv6 2016 2099
scala-spark 中的任何指针
最佳答案
领先和滞后已经实现:
import org.apache.spark.sql.functions.{lead, lag}
import org.apache.spark.sql.expressions.Window
lag('s_date, 1).over(Window.partitionBy('key1, 'key2).orderBy('s_date))
查询 Introducing Window Functions in Spark SQL详情。
关于scala - 如何在 Spark-scala 中实现 LEAD 和 LAG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37754704/