重命名Spark Job中的导出文件

时间:2019-04-12 11:01:28

标签: apache-spark amazon-s3 bigdata

我们当前在Databricks上使用Spark Job,该数据在S3中的数据湖上进行处理。 处理完成后,我们将使用正常输出结果到S3存储桶 df.write()

问题是当我们将数据帧写入S3时,文件名由Spark控制,但根据我们的协议,我们需要将此文件重命名为有意义的名称。

由于S3没有重命名功能,我们现在使用boto3复制和粘贴具有期望名称的文件。 这个过程非常复杂,无法随着更多客户加入而扩展。

我们是否有更好的解决方案将导出的文件从Spark重命名为S3?

1 个答案:

答案 0 :(得分:0)

不可能直接在Spark的保存中完成

Spark使用Hadoop文件格式,该文件需要对数据进行分区-这就是为什么您拥有部分文件的原因。如果文件足够小以适合内存,一种解决方法是将其转换为pandas数据框,然后从那里保存为csv。

df_pd = df.toPandas()
df_pd.to_csv("path")