Java 用引号emode NON_NUMERIC编写一个CSV文件,使字符串和非数值单元格仅用引号括起来
我要编写一个CSV,其中包含该模式:Java 用引号emode NON_NUMERIC编写一个CSV文件,使字符串和非数值单元格仅用引号括起来,java,apache-spark,Java,Apache Spark,我要编写一个CSV,其中包含该模式: StructType s = schema.add("codeCommuneCR", StringType, false); s = s.add("nomCommuneCR", StringType, false); s = s.add("populationCR", IntegerType, false); s = s.add("resultatComptable", IntegerType, false); 如果我没有提供“quoteMode”选项,或
StructType s = schema.add("codeCommuneCR", StringType, false);
s = s.add("nomCommuneCR", StringType, false);
s = s.add("populationCR", IntegerType, false);
s = s.add("resultatComptable", IntegerType, false);
如果我没有提供“quoteMode”选项,或者即使我将其设置为非数值的
,请按以下方式:
ds.coalesce(1).write().mode(SaveMode.Overwrite)
.option("header", "true")
.option("quoteMode", "NON_NUMERIC")
.option("quote", "\"")
.csv("./target/out_200071470.csv");
Spark
编写的CSV如下:
codeCommuneCR,nomCommuneCR,populationCR,resultatComptable
03142,LENAX,267,43
如果我改为设置一个选项“quoteAll”,如下所示:
ds.coalesce(1).write().mode(SaveMode.Overwrite)
.option("header", "true")
.option("quoteAll", true)
.option("quote", "\"")
.csv("./target/out_200071470.csv");
它产生:
codeCommuneCR,nomCommuneCR,populationCR,resultatComptable
"03142","LENAX","267","43"
但我希望.option(“quoteMode”、“非数值”)
生成:
codeCommuneCR,nomCommuneCR,populationCR,resultatComptable
"03142","LENAX",267,43
根据我的模式
如何进行设置
关于,我已经打开了一个关于它的问题,并且了解到
Spark
现在通过Univocity
处理CSV,他们不再支持此功能
未计划重新添加,因此不再考虑
“quoteMode”
选项。可能是一个错误。考虑在Suff.ApACH上提交一份报告。我找不到任何其他方法来区分Spark CSV中的空字符串和空值。DataFrameWriter的emptyValue
和nullValue
选项应有助于区分空字符串和空值。