scala - 在 Scala SparkSQL 中使用 NVL2 和 NULLIF

标签 scala apache-spark apache-spark-sql

我正在尝试在我的 scala-spark 代码中使用 NVL2 和 NULLIF spark sql 函数,但它不起作用。

这是我看到的 下面的语句工作正常并返回正确的结果

spark.sql("select columnName, NULLIF(columnName, 'abc') as status from df")

但是,这条语句失败并返回以下错误-

df.withColumn('status', NULLIF(columnName, 'abc')) 

错误:未找到:值 NULLIF

尝试在 withColumn() 语法中使用 NULLIF、NVL2、LEAST 和 GREATEST 函数时,我遇到了类似的问题。我错过了什么吗?我试过了

import org.apache.spark.sql.functions._ 
import org.apache.spark.sql.catalyst.expressions._ 
import org.apache.spark.sql.catalyst.analysis._

在我的 Scala 代码中,但没有任何帮助。

最佳答案

Scala Spark 函数库没有这些函数,但是 spark sql 库有这些函数。这就是您无法用作 spark 函数 API 的原因。

https://spark.apache.org/docs/2.0.2/api/java/org/apache/spark/sql/functions.html

isNull 函数存在,可以结合 when/then 子句来设置值。

希望对你有帮助。

关于scala - 在 Scala SparkSQL 中使用 NVL2 和 NULLIF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52485530/

相关文章:

java - Spark 中 HashMap 的 Kryo 反序列化失败

apache-spark - Spark Streaming - 基于过滤器参数分割输入流的最佳方法

apache-spark - Spark SQL 配置

apache-spark - 将数据框结果插入配置单元表时出现 Spark 异常

scala - Akka Actor 设置 : In Main method or in 'Manager' class?

json - 反序列化 JSON 区分缺失值和空值

scala - 使用 Scala 将字符串连接到 Spark 数据框中列表的每个元素

python - 创建合并其他两个列的 Pyspark DataFrame 列,为什么我收到 'unicode' 对象没有属性 isNull 的错误?

apache-spark - 求pyspark数组的均值<double>

scala - 特征的多个类型实例中的类型差异