Java 使用SPARK写入CSV时从字符串类型数据中删除双引号

Java 使用SPARK写入CSV时从字符串类型数据中删除双引号,java,csv,apache-spark,Java,Csv,Apache Spark,我们将Java与Spark一起使用。当前的需求是将一个数据集写入Spark,空间作为Delimeter。以下是我尝试过的代码: fooDataSetObject.coalesce(1).map((MapFunction<FooDataSet, FooDataSet>) fooDataSet -> FileOperations.call(fooDataSet,broadcastedProperty),encoder).select("column","cons_zero",

我们将Java与Spark一起使用。当前的需求是将一个数据集写入Spark,空间作为Delimeter。以下是我尝试过的代码:

 fooDataSetObject.coalesce(1).map((MapFunction<FooDataSet, FooDataSet>) fooDataSet -> 
 FileOperations.call(fooDataSet,broadcastedProperty),encoder).select("column","cons_zero",
            "columnA","columnB","columnC","columnD",
            "constants_value")
            .write()
            .format("com.databricks.spark.csv")
            .option("inferSchema", true)
            .option(Constants.DELIMITER, " ")
            .option(Constants.IGNORE_LEADING_WHITESPACE, ApplicationConstants.FALSE)
            .option(Constants.IGNORE_TRAILING_WHITESPACE, ApplicationConstants.FALSE)
            .option("quote", " ")
            .mode(SaveMode.Overwrite)
            .save(path);
输出:

93115212345678 0 "GB 29 NWBK 12345 78978911     " 00123400 "12345             " 99 "60214057695857Tickets Cash-back 0"
请使用此代码

.option("quote", "\"")
.option("escape", "\"")

有关更多信息,请参阅。

浏览了以下文档

quote default:设置用于转义带引号的值的单个字符,其中分隔符可以是值的一部分。如果要关闭引号,则需要将其设置为空字符串而不是null。此行为与com.databricks.spark.csv不同。 转义默认值:设置用于转义已引用值内的引号的单个字符。 现在,即使我将代码改为使用SEP而不是DELIMETER,也会出现同样的问题,因为Spark添加了表示空字符的\u0000。 尝试输入一个空字符串,结果相同


因此,我转而使用Spark文本格式,并在后台使用Java格式化程序来创建逗号分隔行。

相同的结果:93115212345678 0 GB 29 NWBK 12345 78978911 00123400 12345 99 602140576958570仍然存在引号。您能提供一行的示例数据吗?
.option("quote", "\"")
.option("escape", "\"")