如何在Spark / Scala中将NULL值归零

时间:2016-08-24 14:10:32

标签: scala apache-spark apache-spark-sql

我有一个Dataframe,其中一些列的类型为String,并且包含NULL作为String值(而不是实际的NULL)。我想把它归咎于零。显然df.na.fill(0)不起作用。我怎么能用零来判断它们呢?

1 个答案:

答案 0 :(得分:1)

您可以使用replace()中的DataFrameNaFunctions,这些可以通过前缀.na访问:

val df1 = df.na.replace("*", Map("NULL" -> "0"))

您还可以创建自己的udf来复制此行为:

import org.apache.spark.sql.functions.col

val nullReplacer = udf((x: String) => {
  if (x == "NULL") "0"
  else x
})

val df1 = df.select(df.columns.map(c => nullReplacer(col(c)).alias(c)): _*)

然而,考虑到它与上述相同,这将是多余的,代价是代码行数超出必要程度。