如何使用PySpark查询DataFrame中字段的最大值
解决思路
你之前的方法行不通,是因为Spark DataFrame本身没有直接的max()实例方法(这个方法属于RDD),得用聚合操作或者排序取首行的方式来获取最大值:
方法一:使用聚合函数agg()
这是最直接的聚合方式,调用max()函数计算列的最大值:
from pyspark.sql.functions import max # 生成仅含最大值的DataFrame,列名默认是max(version) df_max = df.agg(max("version")) # 如果需要自定义列名,用alias重命名 df_max = df.agg(max("version").alias("max_version"))
也可以用字典形式传入聚合规则,不用额外导入函数:
df_max = df.agg({"version": "max"})
方法二:排序后取首行
先按version降序排列,再取第一行,同样能得到最大值:
from pyspark.sql.functions import col df_max = df.orderBy(col("version").desc()).limit(1)
这种方式返回的DataFrame列名还是version,如果需要同时获取其他关联字段,这种方法会更灵活。
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

