Apache spark 在Spark中读取CSV文件时如何忽略双引号?

Apache spark 在Spark中读取CSV文件时如何忽略双引号?,apache-spark,pyspark,Apache Spark,Pyspark,我有一个CSV文件,如: col1,col2,col3,col4 "A,B","C", D" 我想在spark中将其作为数据帧读取,其中每个字段的值都与CSV中写入的值完全相同(我想将“字符视为常规字符,并像任何其他字符一样复制它) 预期产出: +----+----+----+----+ |col1|col2|col3|col4| +----+----+----+----+ | "A| B"| "C"| D"| +----+----+----+----+ 我得到的输出: +----+-

我有一个CSV文件,如:

col1,col2,col3,col4
"A,B","C", D"
我想在spark中将其作为数据帧读取,其中每个字段的值都与CSV中写入的值完全相同(我想将
字符视为常规字符,并像任何其他字符一样复制它)

预期产出:

+----+----+----+----+
|col1|col2|col3|col4|
+----+----+----+----+
|  "A|  B"| "C"|  D"|
+----+----+----+----+
我得到的输出:

+----+----+----+----+
|col1|col2|col3|col4|
+----+----+----+----+
| A,B|   C|  D"|null|
+----+----+----+----+
在pyspark中,我读到如下内容:

dfr = spark.read.format("csv").option("header", "true").option("inferSchema", "true")
我知道如果我添加这样一个选项:

dfr.选项(“quote”、“\u0000”)

在上面的示例中,我得到了预期的结果,因为char
'“
的函数现在由
'\u0000'
完成,但是如果我的CSV文件包含
'\u0000'
字符,我也会得到错误的结果

因此,我的问题是: 如何禁用quote选项,使任何字符都不会像quote那样工作?


我的CSV文件可以包含任何字符,我希望所有字符(COMA除外)都可以简单地复制到各自的数据帧单元格中。我想知道是否有办法使用escape选项来实现这一点。

如果@pault建议的选项不起作用,这只是一个解决办法-

from pyspark.sql.functions import split
df = spark.createDataFrame([('"A,B","C", D"',),('""A,"B","""C", D"D"',)], schema = ['Column'])
df.show()
+-------------------+
|             Column|
+-------------------+
|      "A,B","C", D"|
|""A,"B","""C", D"D"|
+-------------------+

for i in list(range(4)):
    df = df.withColumn('Col'+str(i),split(df.Column, ',')[i])
df = df.drop('Column')
df.show()
+----+----+-----+-----+
|Col0|Col1| Col2| Col3|
+----+----+-----+-----+
|  "A|  B"|  "C"|   D"|
| ""A| "B"|"""C"| D"D"|
+----+----+-----+-----+

根据(重点矿山)的文件:

quote–设置用于转义带引号的值的单个字符,其中分隔符可以是值的一部分。如果未设置,则使用默认值“”。如果要关闭引号,则需要设置空字符串

dfr=spark.read.csv(
path=“path/to/some/file.csv”,
header=“true”,
expertschema=“true”,
quote=“”
)
dfr.show()
#+----+----+----+----+
#|col1 | col2 | col3 | col4|
#+----+----+----+----+
#|“A | B”|“C”| D”|
#+----+----+----+----+