在 AWS Glue 中解压一个 zip 文件
Decompress a zip file in AWS Glue
我在 S3 存储桶中有一个压缩的 gzip 文件。这些文件将由客户端每天上传到 S3 存储桶。解压缩后的 gzip 将包含 10 个 CSV 格式的文件,但仅具有相同的架构。我需要解压缩 gzip 文件,并使用 Glue->Data crawler,需要在 运行 使用开发人员创建 ETL 脚本之前创建一个模式。端点。
glue 是否能够解压缩 zip 文件并创建数据目录。或者我们可以直接在 python ETL 脚本中使用的任何胶水库?或者我应该选择 Lambda/any 其他实用程序,以便在上传 zip 文件后,我 运行 一个实用程序来解压缩并作为 Glue 的输入提供?
感谢任何回复。
胶水可以解压。但这不是最佳的。由于 gzip 格式不可分割(这意味着只有一个执行者可以使用它)。更多信息 here。
您可以尝试通过lambda解压并为新文件夹调用胶水爬虫。
使用gluecontext.create_dynamic_frame.from_options
并在连接选项中提及压缩类型。类似地,输出也可以在写入 s3 时进行压缩。以下代码片段适用于 bzip
,请将格式更改为 gz|gzip
并尝试。
我尝试了 glue 控制台 UI 中的 Target Location
,发现将 dynamic_frames 写入 s3 时支持 bzip 和 gzip,并对生成的代码进行了更改以读取压缩文件从 s3。在文档中它不是直接可用的。
不确定效率。对于一个 400mb 压缩的 bzip 格式的 csv 文件,读取、映射转换、更改为数据帧并返回动态帧需要大约 180 秒 execution time
。请注意 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': ';'
}
)
我在 S3 存储桶中有一个压缩的 gzip 文件。这些文件将由客户端每天上传到 S3 存储桶。解压缩后的 gzip 将包含 10 个 CSV 格式的文件,但仅具有相同的架构。我需要解压缩 gzip 文件,并使用 Glue->Data crawler,需要在 运行 使用开发人员创建 ETL 脚本之前创建一个模式。端点。
glue 是否能够解压缩 zip 文件并创建数据目录。或者我们可以直接在 python ETL 脚本中使用的任何胶水库?或者我应该选择 Lambda/any 其他实用程序,以便在上传 zip 文件后,我 运行 一个实用程序来解压缩并作为 Glue 的输入提供?
感谢任何回复。
胶水可以解压。但这不是最佳的。由于 gzip 格式不可分割(这意味着只有一个执行者可以使用它)。更多信息 here。
您可以尝试通过lambda解压并为新文件夹调用胶水爬虫。
使用gluecontext.create_dynamic_frame.from_options
并在连接选项中提及压缩类型。类似地,输出也可以在写入 s3 时进行压缩。以下代码片段适用于 bzip
,请将格式更改为 gz|gzip
并尝试。
我尝试了 glue 控制台 UI 中的 Target Location
,发现将 dynamic_frames 写入 s3 时支持 bzip 和 gzip,并对生成的代码进行了更改以读取压缩文件从 s3。在文档中它不是直接可用的。
不确定效率。对于一个 400mb 压缩的 bzip 格式的 csv 文件,读取、映射转换、更改为数据帧并返回动态帧需要大约 180 秒 execution time
。请注意 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': ';'
}
)