PySpark读取分号分隔CSV列拆分异常、delimiter参数报错解决方案咨询
问题定位
- 初始读取代码未指定自定义分隔规则,PySpark默认按英文逗号拆分CSV字段,所有以分号分隔的内容会被识别为单字段长文本,无法匹配预设的10个列的结构要求
- 尝试添加
delimiter=';'触发报错的根因:PySpark的CSV读取接口没有delimiter这个入参,对应自定义分隔符的参数名为sep,与Pandas的CSV读取参数命名存在差异
正确读取实现代码
df = spark.read.csv( '/FileStore/tables/BE_August_monthlysaving.csv', header='true', # 以文件首行作为DataFrame列名 sep=';' # 指定分号为字段分隔符,替换报错的delimiter参数 ) display(df)
扩展适配说明
若后续处理的同类型文件存在字段内容本身包含分号的场景,可追加以下参数避免误拆分:
- 配置
quote='"':识别双引号包裹的字段,不拆分引号内部的分隔符 - 配置
mode='PERMISSIVE':遇到格式不匹配的行时自动填充空值,不中断整体读取流程
按上述配置运行后,示例文件的两行内容会被正确拆分至对应列,连续分号对应的空字段位置会被识别为Null值,完全符合业务需要的结构化DataFrame输出要求。
内容的提问来源于stack exchange,提问作者frenchast
相关产品推荐
相关产品推荐

