我正在尝试将数据帧保存为spark中的.csv。要求所有字段都以“引号”为界。目前,该文件未包含在“引号”中。
我正在使用Spark 2.1.0
代码:
DataOutputResult.write.format("com.databricks.spark.csv").
option("header", true).
option("inferSchema", false).
option("quoteMode", "ALL").
mode("overwrite").
save(Dataoutputfolder)
输出格式(实际):
Name, Id,Age,Gender
XXX,1,23,Male
输出格式(必填):
"Name", "Id" ," Age" ,"Gender"
"XXX","1","23","Male"
到目前为止我尝试过的选项:
QuoteMode,引用它作为文件的选项,但没有成功。
答案 0 :(得分:0)
("quote", "all")
,将quoteMode
替换为quote
或直接在concat
列上使用concat_ws
或df
进行游戏,并在不quote - mode
的情况下保存
import org.apache.spark.sql.functions.{concat, lit}
val newDF = df.select(concat($"Name", lit("""), $"Age"))
或创建自己的udf
函数来添加所需的行为,请在Concatenate columns in apache spark dataframe中找到更多示例
答案 1 :(得分:0)
无法在以上答案中添加评论,因此请发布答案。 在Spark 2.3.1中,使用quoteAll
df1.write.format("csv")
.option("header", true)
.option("quoteAll","true")
.save(Dataoutputfolder)
此外,要添加到@Karol Sudol的评论中(最好的回答),.option("quote","\u0000")
仅在使用Pyspark和Python 3(默认编码为'utf-8')的情况下有效。少数人报告说该选项不起作用,因为他们必须将Pyspark与默认编码为'ascii'的Python 2配合使用。因此,错误"java.lang.RuntimeException: quote cannot be more than one character"