首页 > 解决方案 > 重命名从 Spark 作业导出的文件

问题描述

我们目前在 Databricks 上使用 Spark Job,它在 S3 中的数据湖上进行处理。处理完成后,我们使用普通的 df.write() 将结果导出到 S3 存储桶

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

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

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

标签: apache-sparkamazon-s3bigdata

解决方案


无法直接在 Spark 的存档中进行

Spark 使用 Hadoop 文件格式,这需要对数据进行分区——这就是你有部分文件的原因。如果文件足够小以适合内存,则一种解决方法是转换为 pandas 数据帧并从那里另存为 csv。

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

推荐阅读