据我所知,只有一个选择拼花文件。它是用来压缩的。其他选项如'quote'、'delimiter'、'escape'用于csv文件。所以它们不适用于拼花文件。
我试图模拟你的情况,我认为最好的解决办法是使用函数。首先,我创建了一个csv文件并将其放入HDFS
[ali@aliyesilli ~]$ hadoop fs -cat /test/exCsv/test.csv
A,B,C,D,E
1,2,"3,4","a, ""HEllo"" c",5
然后我把它读成一个csv文件,再把它保存成一个拼花文件
>>> df = spark.read.csv('hdfs://localhost:8020/test/exCsv',header=True)
>>> df.show()
+---+---+---+----------------+---+
| A| B| C| D| E|
+---+---+---+----------------+---+
| 1| 2|3,4|"a, ""HEllo"" c"| 5|
+---+---+---+----------------+---+
>>> df.write.parquet('hdfs://localhost:8020/test/exPar')
>>> spark.read.parquet('hdfs://localhost:8020/test/exPar').show()
+---+---+---+----------------+---+
| A| B| C| D| E|
+---+---+---+----------------+---+
| 1| 2|3,4|"a, ""HEllo"" c"| 5|
+---+---+---+----------------+---+
>>> import pyspark.sql.functions as func
>>> strip=func.udf(lambda x: x.strip('"'))
>>>
>>> spark.read.parquet('hdfs://localhost:8020/test/exPar').withColumn('D', func.regexp_replace(strip('D'), '""', '"')).show()
+---+---+---+------------+---+
| A| B| C| D| E|
+---+---+---+------------+---+
| 1| 2|3,4|a, "HEllo" c| 5|
+---+---+---+------------+---+
也许有其他不同的解决方案,但在这种情况下,我认为你应该使用自定义项或sql函数