som*_*guy 4 apache-spark pyspark
我有一个 CSV 文件,如:
col1,col2,col3,col4
"A,B","C", D"
Run Code Online (Sandbox Code Playgroud)
我想将它作为spark中的数据框读取,其中每个字段的值都与CSV中写入的完全相同(我想将该"字符视为常规字符,并像任何其他字符一样复制它)。
预期输出:
+----+----+----+----+
|col1|col2|col3|col4|
+----+----+----+----+
| "A| B"| "C"| D"|
+----+----+----+----+
Run Code Online (Sandbox Code Playgroud)
我得到的输出:
+----+----+----+----+
|col1|col2|col3|col4|
+----+----+----+----+
| A,B| C| D"|null|
+----+----+----+----+
Run Code Online (Sandbox Code Playgroud)
在pyspark中,我是这样读的:
dfr = spark.read.format("csv").option("header", "true").option("inferSchema", "true")
Run Code Online (Sandbox Code Playgroud)
我知道如果我添加这样的选项:
dfr.option("quote", "\u0000")
我在上面的例子中得到了预期的结果,因为 char 的功能'"'现在是由 完成的'\u0000',但是如果我的 CSV 文件包含一个'\u0000'字符,我也会得到错误的结果。
因此,我的问题是: 如何禁用引用选项,以便没有字符像引用一样?
我的 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"|
#+----+----+----+----+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7616 次 |
| 最近记录: |