在Spark SQL中改变null顺序



我需要能够以升序和降序排序列,并且还允许null为第一个或null为最后一个。使用rdd,我可以使用sortByKey方法和自定义比较器。我想知道是否有使用数据集API的相应方法。我知道如何将desc/asc添加到列中,但我对null排序没有任何线索。

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

正如Oleksandr所提到的,这是一个pull request。现在你可以选择使用"null 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|
+----+----+----+

相关内容

  • 没有找到相关文章

最新更新