Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CSV解析嵌套引号_Csv_Apache Spark_Apache Commons - Fatal编程技术网

CSV解析嵌套引号

CSV解析嵌套引号,csv,apache-spark,apache-commons,Csv,Apache Spark,Apache Commons,我尝试使用ApacheSparks CSV阅读器解析一个相当复杂的CSV,该阅读器内部依赖于ApacheCommons库() 我尝试了不同的组合 quoteMode和escape但无法使其工作,例如防止异常。您是否有任何提示,哪些参数将支持这种嵌套结构 ERROR CsvRelation$: Exception while parsing line: "Gabriella's Song" From The Motion Picture "The Mission"; java.io.IOExc

我尝试使用ApacheSparks CSV阅读器解析一个相当复杂的CSV,该阅读器内部依赖于ApacheCommons库()

我尝试了不同的组合
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";
这与

还有一些特殊领域,比如

&
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)
上述方法适用于任何带分隔符的文件,只需更改分隔符值即可

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


希望这对您有所帮助。

您是否厌倦了使用其他解析引擎?到目前为止,还不是因为我不知道哪个引擎支持它。你知道这样一个引擎吗?你在这里没有太多选择:)
spark csv
只支持
univocity
作为替代。但是
spark csv
支持
parserLib
-难道不能在那里集成其他csv库吗?对于这个输入设置,请将选项引用到
应该足够了。问题是,一般来说,它是否适用于您。