如何在spark数据框csv输出和UTF-8-BOM编码中添加特殊字符分隔符

如何在spark数据框csv输出和UTF-8-BOM编码中添加特殊字符分隔符,csv,apache-spark,spark-dataframe,spark-csv,Csv,Apache Spark,Spark Dataframe,Spark Csv,我必须使用^^分隔符将spark数据帧输出写入csv文件。 我正试着这样做 df.write.format("csv").option("delimiter", "\\|\\^\\|") 但在误差以下 java.lang.IllegalArgumentException:分隔符不支持的特殊字符:\|\^\| 如何添加UTF-8-BOM编码默认为UTF-8的输出文件 在java中,如果在文件的开头添加\uFEFF,文件的编码将更改为UTF-8-BOM。现在如何在spark csv中附加此字符 另

我必须使用^^分隔符将spark数据帧输出写入csv文件。 我正试着这样做

df.write.format("csv").option("delimiter", "\\|\\^\\|")
但在误差以下

java.lang.IllegalArgumentException:分隔符不支持的特殊字符:\|\^\|

如何添加UTF-8-BOM编码默认为UTF-8的输出文件

在java中,如果在文件的开头添加\uFEFF,文件的编码将更改为UTF-8-BOM。现在如何在spark csv中附加此字符

另外,如果我使用下面的方法df.rdd.mapx=>x.mkString | ^ |.saveAsTextFiledir路径来存储

如何根据数据框中的列对数据进行分区?

只需将

 df.write.format("csv").option("delimiter","^").csv("dir path to store")
对于多字符,您可以使用以下代码

 df.rdd.map(x=>x.mkString("|^|")).saveAsTextFile("dir path to store")

我认为spark csv不支持多字符分隔符为什么要使用^^字符保存?spark csv仅支持一个字符。为什么不使用标准csv或只使用一个字符?然后在读取文件时再次使用该分隔符。你不能这样做吗?问题是,如果在这里更改,那么许多客户端都会使用^^ ^分隔符,其他人都必须更改,这在我的情况下是不可行的。@RameshMaharjan如果我使用这个df.rdd.mapx=>x.mkString ^ |。保存astextfiledir路径来存储,那么默认情况下,我作为csv获取的所有选项都将不可用,那么我作为csv获取的所有选项都将不可用默认情况下csv将不可用您的意思是什么?我们如何在此解决方案中进行分区最终,所有内容都是RDD,因此在这种情况下性能不会受到影响,但分区情况如何在这种情况下对分区没有影响,分区数将保持不变,如果您需要更多详细信息,您可以详细说明您的问题我是说,如果我使用saveAsText文件选项,我将如何应用以下选项,如PartitionByDataPartition、StatementTypeCode.optionheader、true.OptionDec、gzip