apache-spark - 重命名从 Spark 作业导出的文件
问题描述
我们目前在 Databricks 上使用 Spark Job,它在 S3 中的数据湖上进行处理。处理完成后,我们使用普通的 df.write() 将结果导出到 S3 存储桶
问题是当我们将数据帧写入 S3 时,文件的名称由 Spark 控制,但根据我们的协议,我们需要将这些文件重命名为有意义的名称。
由于 S3 没有重命名功能,我们现在使用 boto3 复制和粘贴具有预期名称的文件。这个过程非常复杂,并且随着更多客户的加入而无法扩展。
我们有没有更好的解决方案将导出的文件从 spark 重命名为 S3 ?
解决方案
无法直接在 Spark 的存档中进行
Spark 使用 Hadoop 文件格式,这需要对数据进行分区——这就是你有部分文件的原因。如果文件足够小以适合内存,则一种解决方法是转换为 pandas 数据帧并从那里另存为 csv。
df_pd = df.toPandas()
df_pd.to_csv("path")
推荐阅读
- r - R中的文档包
- javascript - 如何使用输入类型=范围自定义滚动条
- python - Heroku python with worker:如何传输数据
- firebase - 查询 Firestore 多级深度
- javascript - Promise.All 解决永远不会被 forEach 调用
- node.js - 无法通过代理服务器发送请求
- image - 为什么 PFM 具有相反的行顺序
- phpmyadmin - 如何在 PMA 搜索窗口中显示普通输入字段而不是下拉框
- reactjs - Next.js 身份验证:身份验证出现 404 错误
- laravel - 无法删除 Laravel 中的数据