如何在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
相关产品推荐
相关产品推荐

