Python Pyspark-将数据帧写入2个不同的csv文件

Python Pyspark-将数据帧写入2个不同的csv文件,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我想将一个数据帧保存到两个不同的csv文件中(拆分数据帧)-一个文件只包含标题,另一个文件包含其余的行 我想将这两个文件保存在同一个目录下,这样Spark处理所有逻辑将是最好的选择,如果可能的话,而不是使用pandas分割csv文件 最有效的方法是什么 谢谢你的帮助 假设您有一个名为“df”的数据集 你可以: 选项一:写两次: df.write.(...).option("header", "false").csv(....) df.take(1).option("header", "true"

我想将一个数据帧保存到两个不同的csv文件中(拆分数据帧)-一个文件只包含标题,另一个文件包含其余的行

我想将这两个文件保存在同一个目录下,这样Spark处理所有逻辑将是最好的选择,如果可能的话,而不是使用pandas分割csv文件

最有效的方法是什么


谢谢你的帮助

假设您有一个名为“df”的数据集

你可以: 选项一:写两次:

df.write.(...).option("header", "false").csv(....)
df.take(1).option("header", "true").csv() // as far as I remember, someone had problems with saving DataFrame without rows -> you must write at least one row and then manually cut this row using normal Java or Python file API
或者,您可以使用header=true编写一次,然后手动剪切头并使用普通Java API将其放入新文件中,而不使用头:

df.to_csv("filename.csv", header=False)
标题,无数据:

df_new = pd.DataFrame(data=None, columns=df_old.columns) # data=None makes sure no rows are copied to the new dataframe
df_new.to_csv("filename.csv")

信息技术没关系,但是根据JavaDoc。。PythonDoc?;)“.note::此方法仅在生成的熊猫数据帧较小时使用,因为所有数据都加载到驱动程序的内存中。”谢谢您的回答。还有一个问题,Spark不会将2个文件写入不同的目录吗?是否可以将它们保存在同一个目录中?第二行不是写两行吗<代码>获取(1)将获取第一行数据和
标题,true
也将写入标题?@Young您应该写入单独的文件夹,然后移动文件。不幸的是,文件的分区方式与DataFrame完全相同。如果要将所有内容保存在一个分区中,请记住使用
重新分区(1)
file@philantrovert正如在评论中所说的,有一个问题(我现在找不到),若数据帧为空,Spark不会保存头。所以我们必须得到至少一行,然后使用标准API手动剪切这一行,而不是Spark。但是,如果只有一行,只需执行子流程调用并使用bash就可以了。这样应该更容易。@例如,Philantrover处理~1TB文件可能非常慢,即使使用bash;)