我尝试使用apache sparks CSV阅读器解析一个相当复杂的CSV,它内部依赖于apache commons库(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";
答案 0 :(得分:0)
这与https://github.com/databricks/spark-csv/issues/295
有关一些更特殊的领域,比如
&
Or "Eccoli; attenti ben (Don Pasquale)"
导致这些问题。我们将为Apache Camel编写自己的CSV预处理器。
答案 1 :(得分:0)
尝试一下,对我来说效果很好-
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)
以上方法适用于任何定界文件,只需更改定界符值即可。
您也可以使用正则表达式,但是对于大文件来说效率很低。
希望这会有所帮助。