如何在 aws 胶水中设置特定的压缩值?如果可能,可以在 aws 胶水中手动确定压缩级别和分区吗?

Posted

技术标签:

【中文标题】如何在 aws 胶水中设置特定的压缩值?如果可能,可以在 aws 胶水中手动确定压缩级别和分区吗?【英文标题】:How to set a specific compression value in aws glue? If possible, can the compression level and partitions be determined manually in aws glue? 【发布时间】:2021-10-22 11:12:00 【问题描述】:

我希望使用胶水将数据从源摄取到 s3。是否可以将胶水中摄取的数据压缩到指定值?例如:将数据压缩到 500 MB 并且还可以根据提供的压缩值对数据进行分区?如果是,如何启用此功能?我正在用 Python 编写胶水脚本。

【问题讨论】:

我假设 S3 是您的目标。数据的来源是什么?您希望如何在 S3 中存储数据 - json/csv/parquet 等? 嗨 Azeem,我希望将其以镶木地板格式存储到 s3 中。源是一个关系表。 【参考方案1】:

压缩和分组是相似的术语。压缩发生在镶木地板输出上。但是,您可以使用 'groupSize': '31457280' (30 mb) 来指定输出文件的动态帧的大小(并且是默认输出大小)(至少其中大多数,最后一个文件将是剩下的)。 此外,您需要小心/利用 Glue CPU 类型和数量。比如最大容量 10,工人类型标准。 G.2X 倾向于创建太多的小文件(这将/全部取决于您的情况/输入。) 如果您只读取许多小文件并将它们原封不动地写入一个大组中,那么它们将被“默认压缩/分组”到“groupsize”中。如果您想看到文件写入大小的大幅减少,请将输出格式化为镶木地板。 glueContext.create_dynamic_frame_from_options(connection_type = "s3", format="json",connection_options = "paths":"s3://yourbucketname/folder_name/2021/01/"], recurse':True, 'groupFiles':'inPartition ', 'groupSize': '31457280')

【讨论】:

以上是关于如何在 aws 胶水中设置特定的压缩值?如果可能,可以在 aws 胶水中手动确定压缩级别和分区吗?的主要内容,如果未能解决你的问题,请参考以下文章

aws 胶水 HiveContext 访问胶水 DataCatalog

在 aws 胶水中使用 transformation_ctx 是啥?

如何使用 pyspark 从 aws 胶水的时间戳中提取年份

如何从 AWS 胶水访问 VPC 中的 aws 资源?

如何使用 pyspark 在 aws 胶水中展平嵌套 json 中的数组?

我可以使用 aws 胶水在 sql server 中创建表/写入表吗?