我是Spark窗口函数的新手。我正在实现几个例子来了解它。看看下面的例子。它使用带有withColumn()的drop()。我在spark文档上搜索了很多,但无法理解它的意义。
//Get the top record in each subject with the highest fee
val wSpec = Window.partitionBy($"Subject").orderBy($"Fee".desc)
val dfTop = input.withColumn("rn", row_number.over(wSpec)).where($"rn"===1).drop("rn") //Note: 'input' has my data
dfTop.show()
有人可以解释drop()的重要性吗?如果我不使用drop()会怎么样?
感谢。
答案 0 :(得分:2)
为什么我们需要在最后使用drop()
我们没有。我们这样做是为了删除不再包含有用信息的临时对象。
如果我不使用drop()怎么办?
你还会再增加一列,只有一列,仅此而已。
答案 1 :(得分:1)
drop()用于删除您不再需要的列,没什么重要意义。
您可以通过以下方式自行查看:
//Commenting drop()
val dfTop = input.withColumn("rn", row_number.over(wSpec)).where($"rn"===1) //.drop("rn") //Note: 'input' has my data
dfTop.show()
dfTop.drop("rn").show()
//"rn" column is gone