我有一个带有列
的数据框dfdate: 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
})
这适用于数组,但使用spark数据帧时,它会抛出java.lang.NullPointerException
Update1:使用removeDuplicates
df.sort(desc("date")).removeDuplicates("name")
这是一个很好的解决方案吗?
答案 0 :(得分:1)
此
df.sort(desc("date")).removeDuplicates("name")
无法保证正常工作。回答这个问题的解决方案应该适合你
spark: How to do a dropDuplicates on a dataframe while keeping the highest timestamped row