CSV 解析嵌套引号
CSV parsing nested quotes
我尝试使用 apache sparks CSV reader 解析相当复杂的 CSV,它在内部依赖于 apache 公共库 (https://github.com/databricks/spark-csv)。
我尝试了不同的组合
quoteMode
和 escape
但无法让它工作,例如防止异常。您有哪些参数支持这种嵌套结构的提示吗?
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。
希望这对您有所帮助。
我尝试使用 apache sparks CSV reader 解析相当复杂的 CSV,它在内部依赖于 apache 公共库 (https://github.com/databricks/spark-csv)。
我尝试了不同的组合
quoteMode
和 escape
但无法让它工作,例如防止异常。您有哪些参数支持这种嵌套结构的提示吗?
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。
希望这对您有所帮助。