2016-01-21 324 views
0

您好我正在使用yarnR模式下的sparkR。Sparkr写入DF作为文件csv/txt

我需要写一个sparkr df到csv/txt文件。

我看到有write.df,但它写入实木复合地板文件。

我试图做这个事情

RdataFrame<-collect(SparkRDF) 
write.table(RdataFrame, ..) 

但我得到了许多人警告和contextCleaner一些错误。

有什么办法吗?

回答

4

星火2.0+

可以使用write.text功能:

保存SparkDataFrame的一个文本文件在 指定路径的内容。 SparkDataFrame必须只有一列 字符串类型,其名称为“value”。每行成为 中的新行输出文件。

write.text(df, path) 

write.df具有内置SparkR csv作者:

write.df(df, path, source="csv") 

星火1.x的

您可以使用spark-csv包:

write.df(SparkRDF, "foo.csv", "com.databricks.spark.csv", ...) 

可以添加例如与packages参数SparkR/​​:

sparkR --packages com.databricks:spark-csv_2.10:1.3.0 # For Scala 2.10 
sparkR --packages com.databricks:spark-csv_2.11:1.3.0 # For Scala 2.11 

其他选项参见the official documentation

+0

嘿零,有它写成一个文件,而不是一部分-XXX的方法吗? 我试着做'重新分配(A,1)',然后写'write.df',但它不起作用。 – DanieleO

+1

'重新分配(...,1)'应该可以工作,但实际上不会使用它。如果输出足够小,只需在本地收集和写入即可。如果不是,你通过一台机器至少两次传递所有内容。 – zero323

+0

井输出就像2〜3GB * 30文件,它们会变成太多的文件作为part-xxx。 我试着在R收集和'write.table',希望它不会花这么多。 谢谢。 – DanieleO