小编Mar*_*tin的帖子

查找 Spark 数据框中多个字段的前 n 个结果

我有一个像这样的数据框:

name  field1  field2  field3
a     4       10      8 
b     5       0       11
c     10      7       4
d     0       1       5
Run Code Online (Sandbox Code Playgroud)

我需要找到每个字段的前 3 个名称。

预期输出:

top3-field1  top3-field2  top3-field3
c            a            b
b            c            a
a            d            d
Run Code Online (Sandbox Code Playgroud)

因此,我尝试对 field(n) 列值进行排序,限制前 3 个结果并使用withColumn方法生成新列,如下所示:

df1 = df.orderBy(f.col("field1").desc(), "name") \
.limit(3) \
.withColumn("top3-field1", df["name"]) \
.select("top3-field1", "field1")
Run Code Online (Sandbox Code Playgroud)

使用这种方法,我必须为每个字段(n)创建不同的数据帧,然后将它们连接起来以获得如上所述的结果。我觉得这个问题必须有更好的解决方案。希望有人能给我建议

apache-spark apache-spark-sql pyspark

4
推荐指数
1
解决办法
823
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

pyspark ×1