apache-spark - 在 Spark SQL 中更改空值排序

标签 apache-spark apache-spark-sql

我需要能够按升序和降序对列进行排序,并允许空值排在第一位或空值排在最后。使用 RDD,我可以将 sortByKey 方法与自定义比较器一起使用。我想知道是否有使用 Dataset API 的相应方法。我看到了如何将 desc/asc 添加到列,但我对空值排序一无所知。

最佳答案

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

关于apache-spark - 在 Spark SQL 中更改空值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39381678/

相关文章:

scala - 尝试用两列 [Seq(), String] 创建数据框 - Spark

mongodb - 如何从 databricks python 笔记本更改 mongo-spark 连接配置

apache-spark - Spark Dataframe groupBy 并将结果排序到列表中

python - 如何在pyspark中分解数据框的多列

scala - 将无效数据设置为 Spark DataFrames 中的缺失数据

scala - 选择Jupyter/IPython的许多Spark/Scala内核中的哪一个?

apache-spark - 使用套接字的 Spark Structured Streaming,设置 SCHEMA,在控制台中显示 DATAFRAME

apache-spark - 组织.apache.spark.sql.AnalysisException : cannot resolve given input column

apache-spark - Spark : Set a column value based on multiple row conditions

apache-spark - Spark : What is the difference between Aggregator and UDAF?