scala - org - ¿Cómo ordenar por columna en orden descendente en Spark SQL?
pyspark (6)
En el caso de Java:
Si usamos
DataFrames
, mientras aplicamos combinaciones (aquí combinación interna), podemos ordenar (en ASC) después de seleccionar elementos distintos en cada DF como:
Dataset<Row> d1 = e_data.distinct().join(s_data.distinct(), "e_id").orderBy("salary");
donde
e_id
es la columna en la que se aplica la unión mientras se ordena por salario en ASC.
Además, podemos usar Spark SQL como:
SQLContext sqlCtx = spark.sqlContext();
sqlCtx.sql("select * from global_temp.salary order by salary desc").show();
dónde
- chispa -> SparkSession
- salario -> Vista GlobalTemp.
Intenté
df.orderBy("col1").show(10)
pero se ordenó en orden ascendente.
df.sort("col1").show(10)
también se ordena en orden descendente.
Miré en stackoverflow y las respuestas que encontré estaban todas desactualizadas o
referidas a RDD
.
Me gustaría usar el marco de datos nativo en spark.
Está en
org.apache.spark.sql.DataFrame
para el método de
sort
:
df.sort($"col1", $"col2".desc)
Tenga en cuenta
$
y
.desc
dentro de la
sort
de la columna para ordenar los resultados.
También puede ordenar la columna importando las funciones de spark sql
import org.apache.spark.sql.functions._
df.orderBy(asc("col1"))
O
import org.apache.spark.sql.functions._
df.sort(desc("col1"))
importando sqlContext.implicits._
import sqlContext.implicits._
df.orderBy($"col1".desc)
O
import sqlContext.implicits._
df.sort($"col1".desc)
Solo PySpark
Encontré esta publicación cuando buscaba hacer lo mismo en PySpark. La forma más fácil es simplemente agregar el parámetro ascendente = Falso:
df.orderBy("col1", ascending=False).show(10)
Referencia: http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.DataFrame.orderBy
import org.apache.spark.sql.functions.desc
df.orderBy(desc("columnname1"),desc("columnname2"),asc("columnname3"))
df.sort($"ColumnName".desc).show()