在Spark Window函数中,为什么我们需要在最后使用drop()

时间:2018-05-23 13:01:59

标签: scala apache-spark

我是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()会怎么样?

感谢。

2 个答案:

答案 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