CSV 解析嵌套引号

CSV parsing nested quotes

我尝试使用 apache sparks CSV reader 解析相当复杂的 CSV,它在内部依赖于 apache 公共库 (https://github.com/databricks/spark-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";

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

有关

一些更特殊的字段,例如

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

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

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

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)

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

您也可以使用 Regex,但这对于大文件非常 in-efficient。

希望这对您有所帮助。