在Spark SQL中更改Nulls Ordering

时间:2016-09-08 02:26:06

标签: apache-spark apache-spark-sql

我需要能够按升序和降序对列进行排序,并且还允许空值为first或null为last。使用RDD我可以将sortByKey方法与自定义比较器一起使用。我想知道是否有使用Dataset API的相应方法。我看到如何将desc / asc添加到列中,但我对nulls排序没有任何线索。

3 个答案:

答案 0 :(得分:3)

您也可以使用数据集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

答案 1 :(得分:1)

如Oleksandr所述,有一个拉动请求。现在您可以选择使用“nulls first”或“nulls last”

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|
+----+----+----+

答案 2 :(得分:0)

似乎您需要等待,pull request将被推送到主分支。