2016-09-08 4 views
1

列を昇順と降順に並べ替えることができる必要があります。また、NULLを先頭にするか、NULLを最後にすることができる必要があります。 RDDを使用して、sortByKeyメソッドをカスタムコンパレータで使用できます。データセットAPIを使用して対応するアプローチがあるかどうか疑問に思っていました。私は列にdesc/ascを追加する方法を見ていますが、nullsを注文する手掛かりはありません。Spark SQLでNULLを変更する

答えて

0

pull requestがマスターブランチにプッシュされるのを待つ必要があるようです。

0

Oleksandrに言及されているように、これに対してプルリクエストがありました。今、あなたは、必要に応じて「最初のヌル」または「最後のヌル」

scala> spark.sql("select * from spark_10747 order by col3 nulls last").show 
+----+----+----+ 
|col1|col2|col3| 
+----+----+----+ 
| 6| 7| 4| 
| 6| 11| 4| 
| 6| 15| 8| 
| 6| 15| 8| 
| 6| 7| 8| 
| 6| 12| 10| 
| 6| 9| 10| 
| 6| 13|null| 
| 6| 10|null| 
+----+----+----+ 
0

を使用することができますが、データセットのAPIでそれを行うにもすることができます

scala>  val df = Seq("a", "b", null).toDF("x") 
df: org.apache.spark.sql.DataFrame = [x: string] 

scala> df.select('*).orderBy('x.asc_nulls_last).show 
+----+ 
| x| 
+----+ 
| a| 
| b| 
|null| 
+----+ 


scala> df.select('*).orderBy('x.asc_nulls_first).show 
+----+ 
| x| 
+----+ 
|null| 
| a| 
| b| 
+----+ 

同じことがdesc_nulls_lastdesc_nulls_firstで動作します。

関連する問題