如何配置 Spark / Glue 以避免在 Glue 作业成功执行后创建空 $_folder_$

2024-01-12

我有一个简单的glue etl 作业,它是由Glue 工作流程触发的。它从爬虫表中删除重复数据并将结果写回到 S3 存储桶中。工作顺利完成。然而,spark 的空文件夹会生成“$folder$" 保留在 s3 中。它在层次结构中看起来不太好,并会导致混乱。有没有办法配置 Spark 或粘合上下文以在成功完成作业后隐藏/删除这些文件夹?

---------------------S3 image --------------------- enter image description here


好吧,经过几天的测试我终于找到了解决方案。在粘贴代码之前,让我总结一下我发现的内容......

  • 这些 $folder$ 是通过 Hadoop 创建的。Apache Hadoop 在 S3 存储桶中创建文件夹时会创建这些文件。Source1 https://aws.amazon.com/premiumsupport/knowledge-center/emr-s3-empty-files/它们实际上是目录标记,如路径+/。Source 2 https://www.edureka.co/community/920/difference-between-s3n-s3a-and-s3#:%7E:text=s3%20is%20a%20block%2Dbased,is%20the%20successor%20to%20s3n.
  • 要更改行为,您需要更改 Spark 上下文中的 Hadoop S3 写入配置。读this https://docs.qubole.com/en/latest/user-guide/cloud-filesystem/aws-filesystem.html and this https://towardsdatascience.com/testing-glue-pyspark-jobs-4b544d62106e and
  • 了解 S3 、 S3a 和 S3nhere https://www.edureka.co/community/53425/what-is-the-difference-between-s3n-s3a-and-s3 and here https://forums.databricks.com/questions/35959/what-is-the-difference-between-using-s3a-s3n-and-s.html
  • 感谢@stevel 的评论here https://stackoverflow.com/questions/65125955/dynamically-folder-creation-in-s3-bucket-from-pyspark-job

现在的解决方案是在 Spark 上下文 Hadoop 中设置以下配置。

sc = SparkContext()
hadoop_conf = sc._jsc.hadoopConfiguration()
hadoop_conf.set("fs.s3.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")

为了避免创建 SUCCESS 文件,您还需要设置以下配置:hadoop_conf.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false")

确保使用 S3 URI 写入 s3 存储桶。前任:

myDF.write.mode("overwrite").parquet('s3://XXX/YY',partitionBy['DDD'])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何配置 Spark / Glue 以避免在 Glue 作业成功执行后创建空 $_folder_$ 的相关文章

随机推荐

  • 带有 AbstractClass 通知程序的 MultiProvider

    我正在尝试为 Google 和 Facebook 登录创建一个单一界面 我的SignInProvider好像 abstract class SignInProvider with ChangeNotifier bool get isSign
  • 没有名为 future 的模块

    我正在 python 中运行一个电报机器人 并且在 raspbian pi3 上使用 python3 6 以下是我的进口 from future import absolute import division print function
  • 用边框半径隐藏的溢出在图像上显示奇怪的灰色边框

    我有一个圆形 div 它包含一个图像和另外两个 div 问题是该 div 周围显示灰色边框 所有浏览器 chrome 和 firefox 均存在此问题 我尝试过添加浏览器 css vendor prefixes 掩码 但没有结果 我不能使用
  • 我应该如何“取消”ConcurrentDictionary 中的 AddOrUpdate?

    我已阅读 MSDN 文档并这个博客 http blogs msdn com b pfxteam archive 2010 01 08 9945809 aspx我需要以下逻辑 For a ConcurrentDictionary
  • Optaplanner 中可空的链式规划变量

    因此 我正在研究对过度约束的路由问题进行建模 其中并非所有任务都必须在该特定规划问题中进行 相反 目标是最大化该规划问题中的任务 我想这应该很容易通过允许计划变量可为空来实现 但似乎 Optaplanner不允许在链式计划变量上执行此操作
  • 在矩形内绘制线宽 matplotlib

    我在使用 Patches 在 matplotlib 中绘制矩形时遇到问题 什么时候linewidth提供给patches Rectangle 边框绘制在矩形的外部 这是一个例子 import matplotlib pyplot as plt
  • 使用单个 SQL 查询构建层次结构树

    我有一个SQL表具有以下结构 id int par int relational to id name varchar Column par包含对id or NULL如果没有参考 此表旨在构建一个层次树 然后 给定数据 id par nam
  • 如何将 TextView 添加到 GridView 布局中的 ImageView 中?

    我需要一个 GridView 但在每个网格中 其上方 内部都会有一个 ImageView 和 TextView 它就像每个网格中的项目图像 以及图像上的项目名称 我正在尝试 public View getView int position
  • 添加后如何在 Android 中实现下拉导航操作栏?

    通过遵循本指南 http wptrafficanalyzer in blog adding drop down navigation to action bar in android http wptrafficanalyzer in bl
  • 将 java String[] 设置为 postgres 准备好的语句时出错

    我正在尝试将字符串数组插入 Postgres 中 我从 Postgres 收到无效类型错误 public static void main String args throws SQLException String skus 0514 0
  • 从 ipython 导入

    如果我将 IDLE 与 python 2 7 一起使用 import cv import cv2 它有效 但如果我使用 ipython 笔记本 它给了我错误 ImportError Traceback 最近调用 最后 在 gt 1份导入简历
  • numPy 中的意外特征向量

    我见过this https stackoverflow com questions 13739186 compute eigenvector using a dominant eigenvalue问题 这与我尝试使用 numPy 计算 Py
  • 将新节点添加到链表的新方法

    void addNewNode struct node head int n struct node temp struct node malloc sizeof struct node temp gt data n temp gt lin
  • 单例bean和原型bean有什么区别?

    我是春天的新手 我读到了这篇文章 基本上 bean 具有定义其在应用程序中存在的范围 Singleton 意味着每个 Spring IOC 容器对单个对象实例的单个 bean 定义 原型 意味着任意数量的对象实例的单个 bean 定义 那么
  • Postman 上的授权类型 Bearer Token

    我正在尝试使用 Postman 测试一些端点 所有端点都需要一个可以通过登录获取的令牌 所以我这样做了 请求 1 登录成功后 我可以从响应中访问令牌 然后将该令牌存储在全局变量中 let token pm response json loc
  • 旧版应用程序上的 Windows GUI 自动化

    我正在尝试自动化一个名为的旧 Windows 应用程序FacTel5 http www movistar es empresas ayuda factel abierto empresas 我已经能够自动化登录部分 但下一个表单是一个类似项
  • 消息框错误:外部导入不安全

    import Graphics Win32 import System Win32 DLL import Control Exception bracket import Foreign import System Exit main IO
  • 修复 Docker 中的 World-writable MySql 错误

    我正在使用 docker compose 对于 db 我定义了这样的容器 db build builds mysql 5 7 environment MYSQL ROOT PASSWORD pass MYSQL DATABASE MYSQL
  • 带有 numpy 掩码数组的 Python 散点图

    我一直试图掩盖散点图的数据 所有数据似乎都在绘制 我正在使用 numpy 数组 如下面的代码片段所示 我想也许我无法屏蔽 c 数组 我似乎找不到任何执行此操作的文档 我将尝试使用 s 数组 任何帮助是极大的赞赏 yy NP ma array
  • 如何配置 Spark / Glue 以避免在 Glue 作业成功执行后创建空 $_folder_$

    我有一个简单的glue etl 作业 它是由Glue 工作流程触发的 它从爬虫表中删除重复数据并将结果写回到 S3 存储桶中 工作顺利完成 然而 spark 的空文件夹会生成 folder 保留在 s3 中 它在层次结构中看起来不太好 并会