Spark - 处理 CSV 文件中的空白值
Spark - handle blank values in CSV file
假设我有一个简单的管道分隔文件,缺少值:
A|B||D
我将其读入数据框:
val foo = spark.read.format("csv").option("delimiter","|").load("/path/to/my/file.txt")
缺少的第三列不是空值,而是空字符串:
+-----------+----+
|_c0|_c1| _c2|_c3|
+-----------+----+
|a |b |null|c |
我希望能够控制 Spark 对缺失值的处理。根据CSV Documentation,有一个nullValue
选项:
nullValue: string that indicates a null value, any fields matching
this string will be set as nulls in the DataFrame.
但是因为我在那里没有任何价值,我似乎无法那样控制它。
没有测试我读入的每个文件的每个字段,有没有办法控制 spark 对这些空白的处理?例如,将其替换为 'N/A'.
如果相关的话,我们正在使用 Spark 2.1。
nullValue
和 emptyValue
选项与您的期望相反 - 它们允许您指定值,如果在源数据中遇到这些值,则应转换为 null
或""
(分别)在结果数据框中。例如,如果您的输入是
a|b|N/A|d
你设置
option("nullValue", "N/A")
你会再次结束
+-----------+----+
|_c0|_c1| _c2|_c3|
+-----------+----+
|a |b |null|c |
更重要的是,Spark 在 class DataFrameNaFunctions 中包含用于处理空值的函数。例如,df.na.fill("N/A")
会将字符串列中的所有 null
实例替换为 "N/A"
。
假设我有一个简单的管道分隔文件,缺少值:
A|B||D
我将其读入数据框:
val foo = spark.read.format("csv").option("delimiter","|").load("/path/to/my/file.txt")
缺少的第三列不是空值,而是空字符串:
+-----------+----+
|_c0|_c1| _c2|_c3|
+-----------+----+
|a |b |null|c |
我希望能够控制 Spark 对缺失值的处理。根据CSV Documentation,有一个nullValue
选项:
nullValue: string that indicates a null value, any fields matching this string will be set as nulls in the DataFrame.
但是因为我在那里没有任何价值,我似乎无法那样控制它。
没有测试我读入的每个文件的每个字段,有没有办法控制 spark 对这些空白的处理?例如,将其替换为 'N/A'.
如果相关的话,我们正在使用 Spark 2.1。
nullValue
和 emptyValue
选项与您的期望相反 - 它们允许您指定值,如果在源数据中遇到这些值,则应转换为 null
或""
(分别)在结果数据框中。例如,如果您的输入是
a|b|N/A|d
你设置
option("nullValue", "N/A")
你会再次结束
+-----------+----+
|_c0|_c1| _c2|_c3|
+-----------+----+
|a |b |null|c |
更重要的是,Spark 在 class DataFrameNaFunctions 中包含用于处理空值的函数。例如,df.na.fill("N/A")
会将字符串列中的所有 null
实例替换为 "N/A"
。