如何保存数据框火花作为磁盘CSV? [英] How to save a spark DataFrame as csv on disk?
问题描述
对于这个例子的结果。
df.filter("project = 'en'").select("title","count").groupBy("title").sum()
这将返回数组。
如何的火花数据帧保存在磁盘上的csv?
How to save a spark DataFrame as csv on disk ?
推荐答案
星火不支持磁盘上的原生CSV输出。
Spark doesn't support native csv output on disk.
您有三种可用的解决方案认为:
You have three available solutions thought:
-
您可以将您的数据框转换成RDD:
You can convert your Dataframe into an RDD :
def convertToReadableString(r : Row) = ???
df.rdd.map{ convertToReadableString }.saveAsTextFile(filepath)
这将创建一个文件夹中的文件路径。根据该文件路径,你会发现分区上的文件(例如部分000 *)
This will create a folder filepath. Under the filepath, you'll find partitions files (e.g part-000*)
如果我想所有的分区追加到一个大的CSV我通常做的是
What I usually do if I want to append all the partitions into a big CSV is
cat filePath/part* > mycsvfile.csv
有些人会使用 COALESCE(1,FALSE)
以创建从RDD一个分区。它通常是一个不好的做法,因为它可能会压倒驱动程序。
Some will use coalesce(1,false)
to create one partition from the RDD. It's usually a bad practice, since it may overwhelm the driver.
注意 df.rdd
将返回一个RDD [行]
Note that df.rdd
will return an RDD[Row]
您可以使用Ddatabricks火花CSV 库:
You can use Ddatabricks spark-csv library:
-
星火1.4 +
Spark 1.4+:
df.write.format("com.databricks.spark.csv").save(filepath)
星火1.3:
Spark 1.3:
df.save(filepath,"com.databricks.spark.csv")
您可以转换为本地大熊猫数据帧,并使用 to_csv
办法(PySpark只)。
You can convert to local Pandas data frame and use to_csv
method (PySpark only).
我希望这有助于。
这篇关于如何保存数据框火花作为磁盘CSV?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!