Я попробовал df.orderBy("col1").show(10)
, но отсортирован в порядке возрастания. df.sort("col1").show(10)
также сортируется в порядке убывания. Я посмотрел на stackoverflow и ответы, которые я нашел, были устаревшими или относились к RDD. Я бы хотел использовать собственный фреймворк в иске.
Как сортировать по столбцу в порядке убывания в Spark SQL?
Ответ 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)
Ответ 3
Только PySpark
Я наткнулся на этот пост, когда хотел сделать то же самое в PySpark. Самый простой способ - просто добавить параметр ascending = 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
Ответ 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.