You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PySpark中读取CSV文件的空字符串与NULL值?

PySpark读取CSV时区分空字符串与NULL值的问题

需要在PySpark中读取包含无内容字段与**空字符串("")**的CSV文件,目标是将无内容的字段识别为NULL,将""识别为空字符串。但尝试nullValue=None、emptyValue=""等多种参数组合后,所有情况均将两者识别为NULL。

测试代码与结果

测试代码如下:

with open("/dbfs/tmp/c.csv", "w") as f:
    f.write('''id,val
1,
2,""
3,str1
''')

for e, n in [('', None), ('', ''), (None, None), (None, '')]:
    print(f'e: "{e}", n: "{n}"')
    df = spark.read.csv('dbfs:/tmp/c.csv', header=True, emptyValue=e, nullValue=n).show()

测试结果显示,所有参数组合均将CSV中无内容的字段(如第一行的val列)和带双引号的空字符串(第二行的val列)都识别为NULL,无法区分两者。

Scala对比验证

在Scala中使用对应配置可正常区分两种情况:

spark.read
    .option("header", "true")
    .option("emptyValue", "")
    .option("nullValue", null)
    .csv("dbfs:/tmp/c.csv").show()

该代码能正确将无内容字段识别为NULL,将""识别为空字符串。

已查阅的相关资料

  • Spark官方CSV数据源文档中关于emptyValue和nullValue参数的定义
  • 社区讨论中关于Spark读取分区文件时空字符串被转为NULL的问题
  • Databricks社区中关于读取CSV空白值的配置方案

内容的提问来源于stack exchange,提问作者Kashyap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 14:13:16