例如,这样的结果:
df.filter("project = 'en'").select("title","count").groupBy("title").sum()
将返回一个数组。
如何将 Spark DataFrame 作为 csv 文件保存在磁盘上?
Apache Spark 不支持磁盘上的本机 CSV 输出。
不过,您有四种可用的解决方案:
-
您可以将 Dataframe 转换为 RDD :
def convertToReadableString(r : Row) = ???
df.rdd.map{ convertToReadableString }.saveAsTextFile(filepath)
这将创建一个文件夹文件路径。在文件路径下,您将找到分区文件(例如part-000*)
如果我想将所有分区附加到一个大的 CSV 中,我通常会做的是
cat filePath/part* > mycsvfile.csv
有的会用coalesce(1,false)
从 RDD 创建一个分区。它通常是一个不好的做法,因为它可能会将您收集的所有数据拉到驱动程序中,从而使驱动程序不堪重负。
注意df.rdd
将返回一个RDD[Row]
.
-
With 火花,您可以使用databricks Spark-csvlibrary https://github.com/databricks/spark-csv:
-
火花1.4+:
df.write.format("com.databricks.spark.csv").save(filepath)
-
火花1.3:
df.save(filepath,"com.databricks.spark.csv")
-
With 火花2.x the spark-csv
不需要包,因为它包含在 Spark 中。
df.write.format("csv").save(filepath)
您可以转换为本地 Pandas 数据框并使用to_csv
方法(仅限 PySpark)。
Note:解决方案 1、2 和 3 将生成 CSV 格式文件(part-*
)由 Spark 在调用时调用的底层 Hadoop API 生成save
。你将会拥有一个part-
每个分区的文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)