【发布时间】:2018-07-17 01:11:03
【问题描述】:
我正在尝试将数据从 spark 数据帧导出到 .csv 文件:
df.coalesce(1)\
.write\
.format("com.databricks.spark.csv")\
.option("header", "true")\
.save(output_path)
它正在创建一个文件名“part-r-00001-512872f2-9b51-46c5-b0ee-31d626063571.csv”
我希望文件名是“part-r-00000.csv”或“part-00000.csv”
由于文件是在 AWS S3 上创建的,因此我无法使用 os.system 命令。
如何设置文件名,同时保留文件头?
谢谢!
【问题讨论】:
-
如果你可以把它拉下来并命名为任何你喜欢的名字,它在 HDFS 上的名称是否重要?
hadoop fs -cat path/to/output/part-r-* > path/to/local/file.csv会将所有部分从 Hadoop 转储到本地磁盘上的一个文件中。 -
我正在尝试构建一个自动化的 pyspark etl 作业,因此我避免了各种手动和本地系统干预。我的问题很简单“将数据从 spark 数据帧导出到 .csv 文件时,文件名应为“part-00000”。感谢您的回复。
-
我以前从未见过这种类型的文件名。也许该文件已经存在并且这个长名称是为了避免覆盖该文件?
-
不,我确实清理了目标文件夹并重新运行了这项工作。这没有帮助。
-
AFAIK,文件名为
part-#{partition number}-#{random uuid}-#{something}。 AFAIK,UUID 是允许多个执行程序写入同一个目录,而不必担心尝试写入同一个文件。
标签: python apache-spark pyspark export-to-csv databricks