【问题标题】:Spark SQL find min value in column and get whole rowSpark SQL在列中查找最小值并获取整行
【发布时间】:2020-12-08 16:34:51
【问题描述】:

我有一个像下面这样的表,我想在 spark sql 中获取最小距离的行

我试过了

result.select($"sourceBorder", $"targetBorder", $"min(distance))").show()

这会给出错误,而 result.agg(min("distance")) 只给出距离列而不给出其他列。

+------------+------------+--------+
|sourceBorder|targetBorder|distance|
+------------+------------+--------+
|           3|          12|      20|
|           4|          12|      28|
|           2|          12|      16|
|           3|           6|      15|
|           4|           6|      19|
|           2|           6|       7|
|           3|           7|      15|
|           4|           7|      23|
|           2|           7|      11|
+------------+------------+--------+

所以最后想要这一行

|           2|           6|       7|

【问题讨论】:

  • 我排序并得到第一行但我不知道这是最好的方法result.sort($"distance".asc).head()

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


【解决方案1】:

添加一列最小距离,过滤距离=最小距离的行:

result.withColumn(
    "mindistance",
    min($"distance").over(Window.orderBy("distance"))
).filter($"distance" === $"mindistance")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 2019-07-13
    • 2021-05-09
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 2018-07-08
    相关资源
    最近更新 更多