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

如何在PySpark读取CSV文件时正确使用emptyValue参数?

正确区分CSV中的NULL值与空字符串

要实现CSV中空字段解析为NULL、指定字符串(如emptyStr)解析为空字符串的需求,需正确配置PySpark CSV数据源的nullValue和emptyValue参数:

参数作用说明

  • nullValue:定义CSV中代表NULL值的标记,读取时匹配该标记的字段会被解析为NULL;写入时NULL值会转为该标记字符串。
  • emptyValue:定义CSV中代表空字符串的标记,读取时匹配该标记的字段会被解析为空字符串;写入时空字符串会转为该标记字符串。

正确代码示例

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

# 配置双参数读取CSV
df = spark.read.csv(
    'dbfs:/tmp/c.csv',
    header=True,
    nullValue='',
    emptyValue='emptyStr'
)

print(df.collect())

执行结果

[Row(id='1', val=None), Row(id='2', val=''), Row(id='3', val='str1')]

原因解释

默认情况下,Spark会将CSV中的空字段直接解析为NULL,但不会自动将特定字符串转为空字符串。通过显式配置:

  • nullValue='':确保原CSV中的空字段(无内容的列)仍被解析为NULL
  • emptyValue='emptyStr':指定emptyStr字符串被解析为空字符串

这样就能同时区分NULL值和空字符串,满足需求。

内容的提问来源于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:14:55