我想计算同一列中两个值之间的差异。现在我只想要最后一个值和第一个值之间的差异,但是使用 last(column) 返回一个空结果。last() 有没有返回值的原因?有没有办法将我想要的值的位置作为变量传递;例如:第 10 次和第 1 次,还是第 7 次和第 6 次?
Current code
使用 Spark 1.4.0 和 Scala 2.11.6
myDF =
一些具有 n 行 x m 列的数据框
def difference(col: Column): Column = {
last(col)-first(col)
}
def diffCalcs(dataFrame: DataFrame): DataFrame = {
import hiveContext.implicits._
dataFrame.agg(
difference($"Column1"),
difference($"Column2"),
difference($"Column3"),
difference($"Column4")
)
}
当我运行diffCalcs(myDF)
它时,它会返回一个null
结果。如果我修改difference
为 only first(col)
,它会返回四列的第一个值。但是,如果我将其更改为last(col)
,它会返回null
。如果我调用myDF.show()
,我可以看到所有列Double
的每一行都有值,任何列中都没有null
值。