Spark正确读取CSV文件:解决长字段拆分异常问题
解决Spark读取CSV时长字段拆分的问题
问题根源:你的CSV里长描述字段包含逗号,且用双引号包裹字段内容,内部的双引号通过
""转义,但Spark默认CSV读取配置没正确识别这种转义规则,误把内部转义引号当成字段结束标记,导致Description字段被拆分,进而搞乱Authors字段内容。修正方案:读取CSV时显式配置引号和转义参数,让Spark正确解析带转义的字段:
修改读取代码如下:
df_fake = spark.read.option("header", "true") \ .option("quote", "\"") \ # 指定字段包裹符为双引号 .option("escape", "\"") \ # 指定转义符为双引号,解析字段内的"" .option("multiLine", "true") \ # 可选:如果描述含换行必须开,无换行也不影响 .csv("C:\\Users\\KhanhDV8\\Desktop\\fake.csv") df_fake.show()
参数说明:
quote:告诉Spark用双引号包裹包含逗号的字段,避免逗号被当成分隔符。escape:指定用双引号转义自身,这样CSV里的""会被解析成单个双引号,不会触发字段结束。multiLine:如果你的Description字段存在换行内容,必须启用,否则Spark会把换行当成新记录开头;就算没有换行,启用也不会有性能问题。
验证:修改后读取数据,检查长描述是否完整、Authors字段是否正确。300万条记录的量级下,这些配置不会拖慢读取速度,Spark的CSV数据源会高效处理。
内容的提问来源于stack exchange,提问作者Đặng Việt Khánh
相关产品推荐
相关产品推荐

