我们当前在Databricks上使用Spark Job,该数据在S3中的数据湖上进行处理。 处理完成后,我们将使用正常输出结果到S3存储桶 df.write()
问题是当我们将数据帧写入S3时,文件名由Spark控制,但根据我们的协议,我们需要将此文件重命名为有意义的名称。
由于S3没有重命名功能,我们现在使用boto3复制和粘贴具有期望名称的文件。 这个过程非常复杂,无法随着更多客户加入而扩展。
我们是否有更好的解决方案将导出的文件从Spark重命名为S3?
答案 0 :(得分:0)
不可能直接在Spark的保存中完成
Spark使用Hadoop文件格式,该文件需要对数据进行分区-这就是为什么您拥有部分文件的原因。如果文件足够小以适合内存,一种解决方法是将其转换为pandas数据框,然后从那里保存为csv。
df_pd = df.toPandas()
df_pd.to_csv("path")