web-dev-qa-db-ja.com

Spark SQLで列を降順に並べ替える方法は?

df.orderBy("col1").show(10)を試しましたが、昇順にソートされていました。 df.sort("col1").show(10)も降順でソートします。私はstackoverflowを見ました、そして、私が見つけた答えはすべて時代遅れであるか、または RDD を参照しました。ネイティブデータフレームを火花で使用したいのですが。

99
Vedom

sortメソッドの場合、 org.Apache.spark.sql.DataFrame にあります。

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

結果をソートするための列として、sort内の$および.descに注意してください。

67
Vedom

Spark 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)
169
Amit Dubey

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

22
Nic Scozzaro
import org.Apache.spark.sql.functions.desc

df.orderBy(desc("columnname1"),desc("columnname2"),asc("columnname3"))
7
Nitya Yekkirala
df.sort($"ColumnName".desc).show()
6
Nilesh Shinde

Javaの場合:

結合を適用しながらDataFramesを使用する場合(ここでは内部結合)、各DF内の個別の要素を選択した後に(ASCで)ソートできます。

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ビュー.
2
RPaul