2015-08-06 2 views
2

У меня есть DataFrame X. В sparkR я могу найти первую строку, набравв SparkR

first(X) 

Теперь я хочу, чтобы найти последнюю. «last» - - функция агрегата.

Но когда я печатаю последний (X) в sparkR я получаю это сообщение Ошибки (функция (классы, FDEF, mtable): не смогли найти наследуемый метод для функции «последнего» для подписания «DataFrame"» Как это может быть и как я могу решить эту проблему?

Кроме того, я могу сделать голова (X), чтобы получить первые строки, но как я могу получить последние строки в X?

ответ

3

Если DataFrame сортируемое , или если вы добавили row.numbers, отсортируйте его по убыванию en take first:

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

Если вы не хотите, чтобы сортировать, вы можете добавить постоянную строку и использовать в последнюю функцию GroupBy:

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) 
+0

Как бы один найти последнюю запись, если мой DataFrame уже отсортированы? Тогда мне не нужно сортировать его снова. –