Spark:写一个空值作为空列的 CSV

Ant*_*tri 3 csv apache-spark apache-spark-sql pyspark

我正在使用 PySpark 将数据帧写入 CSV 文件,如下所示:

df.write.csv(PATH, nullValue='')
Run Code Online (Sandbox Code Playgroud)

该数据框中有一列字符串类型。一些值为空。这些空值显示如下:

...,"",...
Run Code Online (Sandbox Code Playgroud)

我希望它们像这样显示:

...,,...
Run Code Online (Sandbox Code Playgroud)

这可以通过csv.write() 中的选项实现吗?

谢谢!

Kaf*_*els 9

轻松emptyValue设置选项

emptyValue: 设置空值的字符串表示形式。如果没有设置,它使用默认值,""

from pyspark import Row
from pyspark.shell import spark

df = spark.createDataFrame([
    Row(col_1=None, col_2='20151231', col_3='Hello'),
    Row(col_1=2, col_2='20160101', col_3=None),
    Row(col_1=3, col_2=None, col_3='World')
])

df.write.csv(PATH, header=True, emptyValue='')
Run Code Online (Sandbox Code Playgroud)

输出

col_1,col_2,col_3
,20151231,Hello
2,20160101,
3,,World
Run Code Online (Sandbox Code Playgroud)

  • 真奇怪。当我使用 df.write.format('csv').option('nullValue', None).save(PATH)` 时,它会写入空值。但是当我像“df.write.csv(PATH, nullValue=None)”那样使用它时,它会写入空 **string** 值 - 双引号 (2认同)