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

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

Ответ 1

Это в org.apache.spark.sql.DataFrame для метода sort:

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

Обратите внимание на $ и .desc внутри sort для столбца, по которому сортируются результаты.

Ответ 2

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

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

Или

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

импорт sqlContext.implicits._

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

Или

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

Ответ 4

import org.apache.spark.sql.functions.desc

df.orderBy(desc("columnname1"),desc("columnname2"),asc("columnname3"))

Ответ 5

df.sort($"ColumnName".desc).show()

Ответ 6

В случае с Java:

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

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

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

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

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

где

  • искра → SparkSession
  • зарплата → GlobalTemp View.