如何获取对应于Spark Scala数据框中某些列的最小值的行

时间:2018-10-08 05:54:23

标签: scala apache-spark apache-spark-sql spark-streaming apache-spark-2.2

我有以下代码。 df3是使用以下代码创建的。我想获取distance_n的最小值以及包含该最小值的整个行。

enter image description here

 //it give just the min value , but i want entire row containing that min value

enter image description here

为了获取整行,我将此df3转换为用于执行spark.sql的表

如果我喜欢这样      spark.sql(“从table1中选择纬度,经度,速度,最小值(距离_n)”)。show()

//它抛出错误 enter image description here

如果       spark.sql(“从table180中选择纬度,经度,速度,最小值(距离_nd)”)。show()

//通过将distance_n替换为distance_nd会引发错误

enter image description here

如何解决此问题以获得与最小值对应的整行

1 个答案:

答案 0 :(得分:1)

在使用自定义UDF之前,您必须在spark的sql上下文中注册它。

例如:

spark.sqlContext.udf.register("strLen", (s: String) => s.length())

注册UDF之后,您可以像在spark sql中一样访问它

spark.sql("select strLen(some_col) from some_table")

参考:https://docs.databricks.com/spark/latest/spark-sql/udf-scala.html