2016-01-21 82 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