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

如何在PySpark加载文本文件时移除指定分隔符并生成DataFrame

PySpark 加载 |~ 多字符分隔符文本文件的方案

方案1:Spark 2.4及以上版本(推荐)

高版本Spark的CSV数据源原生支持多字符分隔符,直接指定sep参数即可:

from pyspark.sql import SparkSession

# 初始化SparkSession
spark = SparkSession.builder.appName("read_custom_delim").getOrCreate()

# 加载文件
df = spark.read.csv(
    path="替换为你的实际文件路径",
    sep="|~",  # 直接指定自定义多字符分隔符
    header=True,  # 首行作为字段名
    inferSchema=True  # 自动推断字段类型,无需可删除该参数
)

# 校验读取结果
df.show()

输出结果示例:

+-----+---+------+
| name|age|gender|
+-----+---+------+
|rakhi| 24|     F|
|Sujal| 23|     M|
+-----+---+------+

方案2:Spark 2.4以下版本(兼容方案)

低版本不支持CSV多字符分隔符,可先读取整行再拆分转换:

from pyspark.sql import Row

# 按文本格式读取所有行
rdd = spark.sparkContext.textFile("替换为你的实际文件路径")

# 提取表头
header = rdd.first().split("|~")
# 过滤表头行后拆分每行内容,封装为Row对象
data_rdd = rdd.filter(lambda line: line != rdd.first()) \
              .map(lambda line: Row(**dict(zip(header, line.split("|~")))))

# 转换为DataFrame
df = spark.createDataFrame(data_rdd)

df.show()

注意事项

  • 若文件内容存在被引号包裹的字段,方案1可配合quote、escape等CSV通用参数调整读取规则。
  • 若存在缺列的异常行,可在拆分时指定拆分次数,避免字段错位:例如line.split("|~", 2)限制最多拆分2次,适配3列的文本结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:54:01