在Scala SparkSQL中使用NVL2和NULLIF

时间:2018-09-24 18:46:47

标签: 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')) 

error: not found: value 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代码中,但没有任何帮助。

1 个答案:

答案 0 :(得分:0)

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子句组合以设置值。

希望对您有帮助。