pyspark read.csv一个小坑(转义符居然是")

1.bug描述

下面代码一般可正常读取本地csv文件

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
df = spark.read.csv('my_test.csv', header=True)
print(df)

但是最近用GA数据库时,sql查询数据转成csv后。用上述代码读取文件,居然看到一列内容是下面格式,单引号、双引号、逗号掺杂在一起,导致逗号两端内容给搞到两列中去了,并且后边数据丢失了。
““it‘s an apple, chi le ma””
csv中原数据格式
|title|name|
|"“it‘s an apple, chi le ma”"|apple|
读取到dataframe后,数据如下
|title |name|
|"“it‘s an apple|chi le ma”"|

2.问题原因

为了区分内容中单引号,用双引号包围,逗号又是csv区分列默认符号,并且平常都是用\作为转义符,没见过"做转义符的。这里的"",前一个"其实充当了转义符。还用read.csv默认参数会导致上述情况。

3.解决方法

修改read.csv内参数即可,虽说解决很简单,但是蒙了好久啊

df = spark.read.csv('my_test.csv', header=True, escape='"')

你可能感兴趣的:(spark笔记)