Próbowałem, df.orderBy("col1").show(10)
ale posortowano w kolejności rosnącej. df.sort("col1").show(10)
sortuje również w porządku malejącym. Spojrzałem na stackoverflow i wszystkie odpowiedzi, które znalazłem, były nieaktualne lub odnosiły się do RDD . Chciałbym użyć natywnej ramki danych w Spark.
145
Odpowiedzi:
Możesz również posortować kolumnę, importując funkcje spark sql
import org.apache.spark.sql.functions._ df.orderBy(asc("col1"))
Lub
import org.apache.spark.sql.functions._ df.sort(desc("col1"))
importowanie sqlContext.implicits._
import sqlContext.implicits._ df.orderBy($"col1".desc)
Lub
import sqlContext.implicits._ df.sort($"col1".desc)
źródło
asc
słowo kluczowe nie jest konieczne:..orderBy("col1", "col2")
.Jest w
org.apache.spark.sql.DataFrame
nasort
metodzie:df.sort($"col1", $"col2".desc)
Zwróć uwagę
$
i.desc
wewnątrzsort
kolumny, według której chcesz posortować wyniki.źródło
import org.apache.spark.sql.functions._
aimport sqlContext.implicits._
także wiele fajnych funkcji.df.sort($"Time1", $"Time2".desc) SyntaxError: invalid syntax
przy symbolu $Tylko PySpark
Natknąłem się na ten post, gdy chciałem zrobić to samo w PySpark. Najłatwiej jest po prostu dodać parametr ascending = False:
df.orderBy("col1", ascending=False).show(10)
Źródła: http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.DataFrame.orderBy
źródło
import org.apache.spark.sql.functions.desc df.orderBy(desc("columnname1"),desc("columnname2"),asc("columnname3"))
źródło
df.sort($"ColumnName".desc).show()
źródło
W przypadku Javy:
Jeśli użyjemy
DataFrames
, podczas stosowania złączeń (tutaj złączenie wewnętrzne), możemy posortować (w ASC) po wybraniu różnych elementów w każdym DF jako:Dataset<Row> d1 = e_data.distinct().join(s_data.distinct(), "e_id").orderBy("salary");
gdzie
e_id
jest kolumna, w której zastosowano łączenie, gdy jest sortowana według wynagrodzenia w ASC.Możemy również użyć Spark SQL jako:
SQLContext sqlCtx = spark.sqlContext(); sqlCtx.sql("select * from global_temp.salary order by salary desc").show();
gdzie
źródło