在 AWS Glue 中解压缩 zip 文件

Yuv*_*uva 2 amazon-web-services aws-glue

我在 S3 存储桶中有一个压缩的 gzip 文件。客户端每天都会将文件上传到 S3 存储桶。解压缩后的 gzip 将包含 10 个 CSV 格式的文件,但仅具有相同的架构。我需要解压缩 gzip 文件,并使用 Glue->Data crawler,需要在使用 dev 运行 ETL 脚本之前创建一个模式。端点。

胶水能够解压缩 zip 文件并创建数据目录。或者我们可以直接在python ETL脚本中使用的任何可用的胶水库?或者我应该选择 Lambda/任何其他实用程序,以便在上传 zip 文件后立即运行一个实用程序来解压缩并作为输入提供给 Glue?

感谢任何答复。

Aru*_*ran 6

在连接选项中使用gluecontext.create_dynamic_frame.from_options并提及压缩类型。同样,写入 s3 时也可以压缩输出。以下代码片段适用于bzip,请将格式更改为gz|gzip并尝试。

我尝试了Target Locationglue控制台的UI,发现bzip和gzip支持将dynamic_frames写入s3,并对生成的代码进行了更改以从s3读取压缩文件。在文档中它不是直接可用的。

不确定效率。execution time对于 bzip 格式的 400mb 压缩 csv 文件,大约需要 180 秒的时间来读取、映射转换、更改为数据帧并返回到动态帧。请注意与控制台中显示的execution time不同。start_time and end_time

datasource0 = glueContext.create_dynamic_frame
  .from_options('s3',
     {
       'paths': ['s3://bucketname/folder/filename_20180218_004625.bz2'],
       'compression':'bzip'
     },
     'csv',
     {
       'separator': ';'
     }
  )
Run Code Online (Sandbox Code Playgroud)


Nat*_*lia 5

胶水可以做减压。但它不会是最佳的。由于 gzip 格式不可拆分(这意味着只有一个执行程序可以使用它)。更多关于这里的信息。

您可以尝试通过 lambda 解压并为新文件夹调用胶水爬虫。

  • 谢谢娜塔莉亚,我接受你的回答,因为我正在寻找 Glue 中解压的是/否的确认,而你的回答是“是”。您是否有使用 Glue 应用解压的代码片段或过程。我有一个用例,正在寻找一些解决方案,所以我可以尝试一下是否有帮助。 (2认同)