Apache spark 无法附加";引述;数据帧写入
我正在尝试在spark中将数据帧保存为.csv。要求所有字段都以“引号”为界。目前,该文件没有用“引号”括起来 我正在使用Spark 2.1.0 代码:Apache spark 无法附加";引述;数据帧写入,apache-spark,spark-dataframe,Apache Spark,Spark Dataframe,我正在尝试在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(Dataoutp
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
输出格式(实际):
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"
df1.write.format("csv")
.option("header", true)
.option("quoteAll","true")
.save(Dataoutputfolder)
到目前为止我尝试过的选项:
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
QuoteMode,在选项中作为文件引用,但没有成功。(“Quote”,“all”)
,将QuoteMode
替换为Quote
或者直接在df
列上玩concat
或concat\u ws
并保存而不使用quote-模式
import org.apache.spark.sql.functions.{concat, lit}
val newDF = df.select(concat($"Name", lit("""), $"Age"))
或者创建自己的udf
函数来添加所需的行为,请在(“quote”,“all”)
中找到更多示例,将quoteMode
替换为quote
或者直接在df
列上玩concat
或concat\u ws
并保存而不使用quote-模式
import org.apache.spark.sql.functions.{concat, lit}
val newDF = df.select(concat($"Name", lit("""), $"Age"))
或者创建自己的
udf
函数来添加所需的行为,请在中找到更多的示例,无法将其作为注释添加到上述答案中,因此作为答案发布。
在Spark 2.3.1中,使用quoteAll
"Name", "Id" ," Age" ,"Gender"
"XXX","1","23","Male"
df1.write.format("csv")
.option("header", true)
.option("quoteAll","true")
.save(Dataoutputfolder)
此外,要添加到@Karol Sudol(伟大答案btw)的注释中,
.option(“quote”,“\u0000”)
仅在使用Pyspark和Python 3时有效,Pyspark的默认编码为“utf-8”。一些人报告说该选项不起作用,因为他们必须将Pyspark与Python2一起使用,Python2的默认编码为“ascii”。因此,错误“java.lang.RuntimeException:引号不能超过一个字符”
无法作为注释添加到上述答案中,因此作为答案发布。
在Spark 2.3.1中,使用quoteAll
"Name", "Id" ," Age" ,"Gender"
"XXX","1","23","Male"
df1.write.format("csv")
.option("header", true)
.option("quoteAll","true")
.save(Dataoutputfolder)
此外,要添加到@Karol Sudol(伟大答案btw)的注释中,
.option(“quote”,“\u0000”)
仅在使用Pyspark和Python 3时有效,Pyspark的默认编码为“utf-8”。一些人报告说该选项不起作用,因为他们必须将Pyspark与Python2一起使用,Python2的默认编码为“ascii”。因此,错误“java.lang.RuntimeException:quote不能超过一个字符”
java.lang.RuntimeException:quote不能超过一个字符try。选项(“quote”,“\u0000”)
可能与unicode null有关,我仍然看到这个问题。添加了选项(“quote”,“\u0000”),我在\u0000上遇到一个错误,说“java.lang.RuntimeException:quote不能超过一个字符”,您知道这是什么意思吗?.option(“header”、“true”).option(“quoteAll”、“true”).option(“quote”、“u0000”).mode(“overwrite”).save(“data/file.csv”).java.lang.RuntimeException:quote不能超过一个字符try。option(“quote”、“u0000”)
可能与unicode null
有关,我仍然看到这个问题。添加了选项(“quote”,“\u0000”),我在\u0000上遇到一个错误,说“java.lang.RuntimeException:quote不能超过一个字符”,您知道这是什么意思吗?.option(“header”,“true”).option(“quoteAll”,“true”).option(“quote”,“u0000”).mode(“overwrite”).save(“data/file.csv”)“已解析:option(“quoteAll”,true)。已解析:option(“quoteAll”,true)。