如何保存数据框火花作为磁盘CSV? [英] How to save a spark DataFrame as csv on disk?

查看:159
本文介绍了如何保存数据框火花作为磁盘CSV?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于这个例子的结果。

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:


  1. 您可以将您的数据框转换成RDD:

  1. 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屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆