Как Сортировать по столбцу в порядке убывания в Spark SQL?


пробовал df.orderBy("col1").show(10) но он отсортирован в порядке возрастания. df.sort("col1").show(10) также сортирует в порядке убывания. Я посмотрел на stackoverflow, и ответы, которые я нашел, все устарели или ссылались на RDDs. Я хотел бы использовать собственный фрейм данных в spark.

6 73

6 ответов:

вы также можете отсортировать столбец, импортировав функции spark sql

import org.apache.spark.sql.functions._
df.orderBy(asc("col1"))

или

import org.apache.spark.sql.functions._
df.sort(desc("col1"))

импорт sqlContext.неявный._

import sqlContext.implicits._
df.orderBy($"col1".desc)

или

import sqlContext.implicits._
df.sort($"col1".desc)

это org.apache.spark.sql.DataFrame на sort способ:

df.sort($"col1", $"col2".desc)

Примечание $ и .desc внутри sort для столбца для сортировки результатов.

самый простой способ-просто добавить параметр по возрастанию=False:

df.orderBy("col1", ascending=False).show(10)

Ссылка: http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.DataFrame.orderBy

df.sort($"ColumnName".desc).show()
df.orderBy(desc("columnname1"),desc("columnname2"),asc("columnname3"))

в случае Java:

если мы используем тег DataFrames, применяя соединения (здесь внутреннее соединение), мы можем сортировать (в ASC) после выбора отдельных элементов в каждом DF как:

Dataset<Row> d1 = e_data.distinct().join(s_data.distinct(), "e_id").orderBy("salary");

здесь e_id - столбец, к которому применяется join при сортировке по зарплате в ASC.

кроме того, мы можем использовать Spark SQL как:

SQLContext sqlCtx = spark.sqlContext();
sqlCtx.sql("select * from global_temp.salary order by salary desc").show();

здесь

  • spark - > SparkSession
  • зарплата - > вид GlobalTemp.