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

PySpark使用text格式读取竖线分隔TXT文件失败,csv格式可行

问题:PySpark读取竖线分隔TXT文件时text格式无法拆分列,csv格式却可以?

现象复现

使用text格式读取(失败)

指定format('text')读取时,所有数据都被存入单个value列,设置的sep='|'和header=True参数完全不起作用:

df = spark.read.format('text').options(header=True).options(sep='|').load("path\\test.txt")

df.show()

输出结果:

+--------------------+
|               value|
+--------------------+
|Name|Color|Size|O...|
|Rabbit|Brown|7|Wa...|
| Horse|Green|28|Dock|
|  Pig|Orange|17|Port|
|Cow|Blue|23|Wareh...|
|  Bird|Yellow|2|Dock|
|   Dog|Brown|10|Port|
|Carrot Man|Orange...|
+--------------------+

使用csv格式读取(成功)

即使文件后缀是.txt,指定format('csv')并配置正确的分隔符和表头参数后,数据能被正确拆分到对应列:

df = spark.read.format('csv').options(header=True).options(sep='|').load("path\\test.txt")

df.show()

输出结果:

+----------+------+----+---------+
|      Name| Color|Size|   Origin|
+----------+------+----+---------+
|    Rabbit| Brown|   7|Warehouse|
|     Horse| Green|  28|     Dock|
|       Pig|Orange|  17|     Port|
|       Cow|  Blue|  23|Warehouse|
|      Bird|Yellow|   2|     Dock|
|       Dog| Brown|  10|     Port|
|Carrot Man|Orange|  22|Warehouse|
+----------+------+----+---------+

原因解析

  • text数据源的本质:它的设计目标是读取纯文本行,每一行只会被解析为单个value字段,不支持任何分隔符拆分或表头解析的配置,所以你设置的sep和header参数对它没有任何效果。
  • csv数据源的适配性:它是专门用于处理分隔符分隔的结构化文本的,不管文件后缀是什么,只要内容符合分隔格式,就能通过sep指定分隔符,header=True识别第一行为表头,从而正确解析出多列数据。

结论

处理竖线(或其他分隔符)分隔的结构化文本文件时,无论文件后缀是.txt还是.csv,都应该使用csv格式读取,而非text格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:02:17