【问题标题】:CSV parsing nested quotesCSV解析嵌套引号
【发布时间】:2016-07-02 16:08:11
【问题描述】:

我尝试使用内部依赖于 apache commons 库 (https://github.com/databricks/spark-csv) 的 apache sparks CSV reader 解析一个相当复杂的 CSV。

我尝试了不同的组合 quoteModeescape 但无法使其工作,例如防止异常。您是否有任何提示哪些参数会支持这种嵌套结构?

 ERROR CsvRelation$: Exception while parsing line: "Gabriella's Song" From The Motion Picture "The Mission"; 
java.io.IOException: (line 1) invalid char between encapsulated token and delimiter

我知道sed 可用于预处理数据。但是,如果集成到 Spark 中会很棒,例如如果不需要进一步的预处理。我没有找到指定正则表达式的可能性。

CSV 文件如下所示:

"Gabriella's Song" From The Motion Picture "The Mission";

【问题讨论】:

  • 您是否厌倦了使用替代解析引擎?
  • 到目前为止不是因为我不知道哪个引擎会支持它。你知道这样的引擎吗?
  • 您在这里没有太多选择 :) spark-csv 仅支持 univocity 作为替代方案。
  • 但是spark-csvsupports parserLib - 不应该在那里集成其他 CSV 库吗?
  • 对于这个输入设置quote选项到"以外的东西就足够了。问题是它是否适合你。

标签: csv apache-spark apache-commons


【解决方案1】:

这与https://github.com/databricks/spark-csv/issues/295有关

一些更特殊的领域,如

&
Or "Eccoli; attenti ben (Don Pasquale)"

导致这些问题。我们将为 Apache Camel 编写自己的 CSV 预处理器。

【讨论】:

    【解决方案2】:

    试试这个,对我来说效果很好 -

    HDFS file -
    spark.read.option("WholeFile", true).option("delimiter", ",").csv(s"hdfs://{my-hdfs-file-path}")
    
    Non-HDFS file -
    spark.read.option("WholeFile", true).option("delimiter", ",").csv(my-hdfs-file-path)
    

    上述方法适用于任何分隔文件,只需更改分隔符值。

    您也可以使用正则表达式,但这对于大文件来说效率非常低。

    希望这有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      相关资源
      最近更新 更多