我有一个我要写入光盘的Spark DataFrame,我使用了以下代码 -
write.df(data_frame,"dataframe_temp.csv",source="csv",mode="overwrite",schema="true",header="true")
它已经完成,我可以看到一个用_SUCCESS
文件创建的新文件夹。
现在,当我尝试从同一个文件中读取时,请使用以下代码 -
dataframe2<-read.df("dataframe_temp.csv",inferSchema="true",header="true")
我收到以下错误:
ERROR RBackendHandler:org.apache.spark.sql.api.r.SQLUtils上的loadDF 失败invokeJava中的错误(isStatic = TRUE,className,methodName, ...):org.apache.spark.sql.AnalysisException:无法推断 Dataframe.csv中ParquetFormat的模式。必须指定 手动;
我甚至尝试过使用重新分区
data_frame<-repartition(data_frame,1)
任何帮助?
答案 0 :(得分:0)
您还必须将来源指定为&#34; csv&#34;:
dataframe2<-read.df("dataframe_temp.csv", source="csv")
关于标题参数:
目前SparkR中还存在Spark 2.0的错误,其中write.df
函数的变量参数未传递给options参数(请参阅https://issues.apache.org/jira/browse/SPARK-17442)。这就是为什么即使您在header="true"
上指定write.df
,也不会将标头写入csv。
答案 1 :(得分:0)
使用镶木地板文件格式解决,镶木地板文件格式默认存储架构。