假设我有一个Spark DataFrame,我想将其保存为CSV文件。在Spark 2.0.0之后,DataFrameWriter类直接支持将其保存为CSV文件。
默认行为是将输出保存在提供的路径内的多个part-*.csv文件中。
如何使用以下方式保存DF:
- 将路径映射到确切的文件名而不是文件夹
- 首行包含标题
- 另存为单个文件而不是多个文件。
处理此问题的一种方法是合并DF,然后保存文件。
df.coalesce(1).write.option("header", "true").csv("sample_file.csv")
然而,这种方法在收集数据时存在缺点,并且需要具备足够内存的主节点。
如果不使用 coalesce ,是否可以编写一个单一的CSV文件?如果不行,是否有比以上代码更有效的方法?
coalesce(1)
或repartition(1)
之外的spark方法。如果您想让多个工作人员附加到同一个文件,则它们必须顺序执行或等待彼此完成,否则记录将无序,这将难以编排。 - Davospart-*
的单个文件。 - Spandan Brahmbhatt