Nar*_*h Y 6 python export-to-csv apache-spark pyspark databricks
我正在尝试将数据从spark数据帧导出到.csv文件:
df.coalesce(1)\
.write\
.format("com.databricks.spark.csv")\
.option("header", "true")\
.save(output_path)
Run Code Online (Sandbox Code Playgroud)
它正在创建一个文件名"part-r-00001-512872f2-9b51-46c5-b0ee-31d626063571.csv"
我希望文件名为"part-r-00000.csv"或"part-00000.csv"
在AWS S3上创建文件时,我对如何使用os.system命令的限制.
如何在保留文件中的标题的同时设置文件名?
谢谢!
好吧,虽然我对我的问题有-3评级,但在这里我发布的解决方案帮我解决了这个问题.我是一名技术人员,总是更多地关注代码/逻辑而不是研究语法.至少对我来说,应该通过一个小的背景来理解这个问题.
来到解决方案:
当我们从spark数据帧创建.csv文件时,
输出文件默认名为part-x-yyyyy,其中:
1)x是"m"或"r",具体取决于作业是否是仅映射作业,还是减少2)yyyyy是映射器或缩减器任务编号,可以是00000或随机数.
为了重命名输出文件,运行os.system HDFS命令应该这样做.
import os, sys
output_path_stage = //set the source folder path here
output_path = // set the target folder path here
//creating system command line
cmd2 = "hdfs dfs -mv " + output_path_stage + 'part-*' + ' ' + output_path + 'new_name.csv'
//executing system command
os.system(cmd2)
Run Code Online (Sandbox Code Playgroud)
fyi,如果我们使用rdd.saveAsTextFile选项,则创建的文件没有标头.如果我们使用coalesce(1).write.format("com.databricks.spark.csv").option("header", "true").save(output_path),则使用随机的part-x名称创建文件.上面的解决方案将帮助我们创建一个带有标题,分隔符和所需文件名的.csv文件.
| 归档时间: |
|
| 查看次数: |
7291 次 |
| 最近记录: |