首页 文章

在AWS Glue中解压缩zip文件

提问于
浏览
1

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

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

感谢任何回复 .

2 回答

  • 3

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

    您可以尝试通过lambda解压缩并为新文件夹调用glue crawler .

  • 2

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

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

    不确定效率 . 它需要大约180秒 execution time 才能读取,映射转换,更改为数据帧并返回动态帧,以获得bzip格式的400mb压缩csv文件 . 请注意 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': ';'
         }
      )
    

相关问题