Spark DataFrame 列裁剪和转换

8
在Scala/Spark中,如何将空字符串(例如“ ”)转换为“NULL”?需要先修剪它,然后再将其转换为“NULL”。谢谢。
dataframe.na.replace("cut", Map(" " -> "NULL")).show //wrong
2个回答

9
您可以创建一个简单的函数来完成它。首先,需要导入一些内容:
import org.apache.spark.sql.functions.{trim, length, when}
import org.apache.spark.sql.Column

并且定义如下:
def emptyToNull(c: Column) = when(length(trim(c)) > 0, c)

最后进行一个快速测试:

val df = Seq(" ", "foo", "", "bar").toDF
df.withColumn("value", emptyToNull($"value"))

应该会产生以下结果:

+-----+
|value|
+-----+
| null|
|  foo|
| null|
|  bar|
+-----+

如果您想将空字符串替换为字符串"NULL,您可以添加otherwise语句:

def emptyToNullString(c: Column) = when(length(trim(c)) > 0, c).otherwise("NULL")

0
请使用下面的软件包来解决问题。
import org.apache.spark.sql.functions.trim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接