2

我有一个 DataFrame X。在 sparkR 中,我可以通过键入找到第一行

first(X)

现在我想找到最后一个。'last' 是一个聚合函数。

但是当我在 sparkR 中键入 last(X) 时,我收到此消息 Error in (function (classes, fdef, mtable) : unable to find an inherit method for function 'last' for signature '"DataFrame"' 这怎么可能以及如何我可以解决这个问题吗?

此外,我可以执行 head(X) 来获取第一行,但是如何获取 X 中的最后一行?

4

1 回答 1

3

如果您的 DataFrame 是可排序的,或者您添加了 row.numbers,请先对其进行降序排序:

dfDesc <- arrange(df, desc(abs(df$rowNumber)))
first(dfDesc)

如果您不想排序,可以添加一个常量行并使用 groupBy 的 last-function:

df <- data.frame(a=c(1,2),b=c(2,3))
DF <- createDataFrame(sqlContext,df)

DF <- withColumn(DF, "constant", DF$a * 0)

lastLine    <- agg(groupBy(DF, DF$constant), a = last(DF[["a"]]), b = last(DF[["b"]]))
collect(lastLine)
于 2015-08-06T10:56:04.253 回答