如何保持一个特定的行,而放弃所有其他不必要的行在scala spark数据框架?



就像标题一样,在scala spark中,如果我有一个像下面这样的数据框架:

+-------------+----------+
| key         | Time     |
+-------------+----------+
|  1          |        1 |  
|  1          |        2 | 
|  1          |        4 |
|  2          |        2 | 
|  2          |        3 | 
+-------------+----------+

对于相同的键,我如何只保留时间最少的键,而删除所有不需要的行?在这种情况下,对于键1,它有3行不同的时间,最小的时间是1,所以我只想保留键1,时间为1,然后删除键1的其他2行。键2也是一样,我只想保留键2,乘以2,所以我去掉键2,乘以3行。key的格式为LongType, time的格式为StringType。是否有办法做到这一点?

+-------------+----------+
| key         | Time     |
+-------------+----------+
|  1          |        1 |  
|  2          |        2 | 
+-------------+----------+

我试过使用删除或过滤功能,但我认为它们不起作用。

试试类似的东西,当然是我自己的数据:

%scala
import spark.implicits._
import org.apache.spark.sql.functions._
val df = sc.parallelize(Seq( (1,7), (1,8), (1,9), (2,2), (2,99) )).toDF("i", "c")
df.groupBy($"i").agg(min($"c")).show()

的回报:

+---+------+
|  i|min(c)|
+---+------+
|  1|     7|
|  2|     2|
+---+------+

相关内容

最新更新