argmax en Spark DataFrames: cómo recuperar la fila con el valor máximo

Dado un Spark DataFramedf, Quiero encontrar el valor máximo en una determinada columna numérica'values'y obtenga las filas donde se alcanzó ese valor. Por supuesto que puedo hacer esto:

# it doesn't matter if I use scala or python, 
# since I hope I get this done with DataFrame API
import pyspark.sql.functions as F
max_value = df.select(F.max('values')).collect()[0][0]
df.filter(df.values == max_value).show()

pero esto es ineficiente ya que requiere dos pasadasdf.

pandas.Series/DataFrame ynumpy.array tenerargmax/idxmax métodos que hacen esto de manera eficiente (de una pasada). También lo hace python estándar (función incorporadamax acepta un parámetro clave, por lo que puede usarse para encontrar el índice del valor más alto).

¿Cuál es el enfoque correcto en Spark? Tenga en cuenta que no me importa si obtengo todas las filas donde se alcanza el valor máximo, o solo algún subconjunto arbitrario (¡no vacío!) De esas filas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta