【发布时间】:2017-01-24 03:03:05
【问题描述】:
我需要在spark中实现滞后功能;我能够像下面那样做 (带有来自 hive/temp spark 表的一些数据)
假设 DF 有这些行:
lagno:value
0, 100
0, 200
2, null
3, null
其中第一列是您要使用的实际滞后数,第二列是实际值。
当我运行这个查询时,它可以工作:
DataFrame df;
DataFrame dfnew=df.select(
org.apache.spark.sql.functions.lag( df.col("value"), 1 ).over(org.apache.spark.sql.expressions.Window.orderBy(new1.col("value"))));
这意味着如果硬编码 lag no 的值,它可以正常工作。
但是,如果我将滞后值作为参数传递,它将不起作用:
DataFrame dfnew=df.select(
org.apache.spark.sql.functions.lag( df.col("value"),df.col("lagno").over(org.apache.spark.sql.expressions.Window.orderBy(new1.col("value"))));
是否需要将 col 类型的参数类型强制转换为整数?
【问题讨论】:
标签: apache-spark apache-spark-sql