Фильтрация кадра данных на основе другого кадра данных в Spark

У меня есть dataframe df со столбцами

date: timestamp
status : String
name : String

Я пытаюсь найти последний статус всех имен

  val users = df.select("name").distinct
  val final_status = users.map( t =>
  {
     val _name =  t.getString(0)
     val record = df.where(col("name") === _name)
     val lastRecord = userRecord.sort(desc("date")).first
     lastRecord
   })

Это работает с массивом, но с искровым фреймом данных выдает java.lang.NullPointerException

Update1: использование removeDuplicates

df.sort(desc("date")).removeDuplicates("name")

Это хорошее решение?


person on_the_shores_of_linux_sea    schedule 14.04.2016    source источник
comment
а) Это обсуждалось несколько раз, и это не может работать б) каков источник удаления дубликатов? Не похоже на существующий метод.   -  person zero323    schedule 14.04.2016


Ответы (1)


Этот

df.sort(desc("date")).removeDuplicates("name")

не гарантируется работа. Решения в ответ на этот вопрос должны работать для вас

искра: как сделать dropDuplicates в кадре данных, сохраняя при этом самую высокую строку с отметкой времени

person David    schedule 14.04.2016