以较大的组读取输入文件 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

以较大的组读取输入文件

您可以设置表的属性,以使 AWS Glue ETL 作业能够在从 Amazon S3 数据存储中读取文件时对文件分组。这些属性使每个 ETL 任务可将一组输入文件读取到单个内存分区中,当 Amazon S3 数据存储中存在大量小型文件时,此功能特别有用。当您设置某些属性时,您会指示 AWS Glue 对 Amazon S3 数据分区中的文件分组并设置要读取的组的大小。您还可以在从 Amazon S3 数据存储中读取时使用 create_dynamic_frame_from_options 方法设置这些选项。

要对表启用文件分组,可在表结构的参数字段中设置键值对。使用 JSON 表示法为表的参数字段设置值。有关编辑表属性的更多信息,请参阅 查看和编辑表详细信息

您可以使用此方法对 Data Catalog 中使用 Amazon S3 数据存储的表启用分组。

groupFiles

groupFiles 设置为 inPartition,以在 Amazon S3 数据分区中启用文件分组。如果输入文件数多于 50000 个,AWS Glue 会自动启用分组,如以下示例中所示。

'groupFiles': 'inPartition'
groupSize

groupSize 设置为组的目标大小 (以字节为单位)。groupSize 属性为可选属性,如果未提供,AWS Glue 将计算一个大小以使用集群中的所有 CPU 内核,同时仍会减少 ETL 任务和内存分区总数。

例如,以下内容将组大小设置为 1 MB。

'groupSize': '1048576'

请注意,应使用计算的结果设置 groupsize。例如,1024 * 1024 = 1048576。

recurse

递归设置为 True,这样在将 paths 指定为路径数组时,会以递归方式读取所有子目录中的文件。如果 paths 是 Amazon S3 中的对象键数组,则不需要设置 recurse,如以下示例所示。

'recurse':True

如果您使用 create_dynamic_frame_from_options 方法直接从 Amazon S3 中读取,请添加这些连接选项。例如,下面尝试将文件分组到 1 MB 组中。

df = glueContext.create_dynamic_frame_from_options("s3", {'paths': ["s3://s3path/"], 'recurse':True, 'groupFiles': 'inPartition', 'groupSize': '1048576'}, format="json")