gpt4 book ai didi

csv - Spark 2.0 Scala - 读取带有转义分隔符的 csv 文件

转载 作者:行者123 更新时间:2023-12-02 01:58:51 26 4
gpt4 key购买 nike

我正在尝试读取一个 CSV 文件,该文件使用反斜杠来转义分隔符而不是使用引号。我尝试过构建不带 qoutes 和转义字符的 DataFrameReader,但它不起作用。看来“转义”选项只能用于转义引号字符。除了创建自定义输入格式之外,还有其他方法可以解决此问题吗?

以下是我现在使用的选项:

  spark.read.options(Map(
"sep" -> ",",
"encoding" -> "utf-8",
"quote" -> "",
"escape" -> "\\",
"mode" -> "PERMISSIVE",
"nullValue" -> ""

例如,假设我们有以下示例数据:

架构:名称、城市

    Joe Bloggs,Dublin\,Ireland
Joseph Smith,Salt Lake City\,\
Utah

应该返回 2 条记录:

  Name           |       City
-----------------|---------------
Joe Bloggs | Dublin,Ireland
Joseph Smith | Salt Lake City,
Utah

能够转义换行符是一件好事,但转义列分隔符是必需的。现在我正在考虑使用 Spark.textFile 读取行,然后使用一些 CSV 库来解析各个行。这将解决我的转义列分隔符问题,但不能解决转义行分隔符问题。

最佳答案

CSV 阅读器似乎不支持此功能(请参阅 https://github.com/databricks/spark-csv/issues/390 )。

我猜想解决这个问题的最简单方法是手动解析行;一点也不理想,但仍然有效,而且不太难。

您可以使用负后向正则表达式来分割行,例如(?<!\\), - 这将匹配前面没有反斜杠的任何逗号。

关于csv - Spark 2.0 Scala - 读取带有转义分隔符的 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39452692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com