我有一个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.option("quote", "\u0000")
在上面的示例中,我得到了预期的结果,因为char的功能'"'
现在由完成'\u0000'
,但是如果我的CSV文件包含'\u0000'
char,那么我也会得到错误的结果。
因此,我的问题是:如何禁用引号选项,以便没有字符像引号一样起作用?
我的CSV文件可以包含任何字符,我希望将所有字符(逗号除外)简单地复制到它们各自的数据帧单元中。我想知道是否有一种方法可以使用转义选项来完成此任务。
从pyspark.sql.DataFrameReader.csv
(重点为我的)文档中:
quote –设置用于转义带引号的值的单个字符,其中分隔符可以是值的一部分。如果设置为None,则使用默认值“。如果要关闭引号,则需要设置一个空字符串。
dfr = spark.read.csv(
path="path/to/some/file.csv",
header="true",
inferSchema="true",
quote=""
)
dfr.show()
#+----+----+----+----+
#|col1|col2|col3|col4|
#+----+----+----+----+
#| "A| B"| "C"| D"|
#+----+----+----+----+
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句