spark数据帧修剪列和转换

时间:2016-11-06 03:17:36

标签: scala apache-spark

在Scala / Spark中,如何将空字符串(如“”)转换为“NULL”?需要先修剪它然后转换为“NULL”。感谢。

dataframe.na.replace("cut", Map(" " -> "NULL")).show //wrong

2 个答案:

答案 0 :(得分:7)

您可以创建一个简单的功能来完成它。首先是几个进口商品:

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")

答案 1 :(得分:0)

请使用下面的程序包解决问题

import org.apache.spark.sql.functions.trim