如何在PySpark中读取带反斜杠转义无引号的竖线分隔文本文件
问题原因
你当前的配置没有禁用Spark CSV读取器的默认引号识别逻辑:Spark默认将双引号"作为字段包裹符,解析时会优先匹配引号对,打乱你预设的反斜杠转义分隔符的规则,因此出现多拆分列的问题。
修正方案
只需新增quote配置项,将其设为空字符串,禁用引号包裹识别逻辑即可,修正后的代码如下:
df = spark.read\ .option("header", "false")\ .option("delimiter", "|")\ .option("escape", "\\")\ .option("quote", "")\ .csv(file_dir)
配置说明
option("quote", ""):完全关闭字段包裹符校验,解析过程忽略内容中的所有引号,仅按指定的转义符、分隔符规则拆分字段,完全匹配你「字段无引号包裹,仅以反斜杠转义分隔符」的需求- 修正后解析你的示例数据会得到预期的3列:col1为
THis is a test,col2为This is a | test,col3为"this is a | test"
内容的提问来源于stack exchange,提问作者user9051697
相关产品推荐
相关产品推荐

