如何为每个 Amazon S3 包含路径创建单个架构 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

如何为每个 Amazon S3 包含路径创建单个架构

默认情况下,当爬网程序为 Amazon S3 中存储的数据定义表时,它会同时考虑数据兼容性和架构相似性。它考虑的数据兼容性因素包括数据是否具有相同的格式(例如,JSON),相同的压缩类型(例如,GZIP),Amazon S3 路径的结构以及其他数据属性。架构相似性衡量单独 Amazon S3 对象的架构的相似程度。

您可以在可能的情况下将 CombineCompatibleSchemas 的爬网程序配置为公用表定义。使用此选项,爬网程序仍会考虑数据兼容性,但在评估指定包含路径中的 Amazon S3 对象时会忽略特定架构的相似性。

如果要在控制台上配置爬网程序以组合架构,请选择爬网程序选项 Create a single schema for each S3 path (为每个 S3 路径创建单个架构)

当您使用 API 配置爬网程序时,请设置以下配置选项:

  • 使用爬网程序 API 中的以下 JSON 对象的字符串表示形式设置 Configuration 字段;例如:

    { "Version": 1.0, "Grouping": { "TableGroupingPolicy": "CombineCompatibleSchemas" } }

为帮助说明此选项,假设您使用包含路径 s3://bucket/table1/ 定义了一个爬网程序。当该爬网程序运行时,它会找到两个具有以下特征的 JSON 文件:

  • 文件 1S3://bucket/table1/year=2017/data1.json

  • 文件内容{“A”: 1, “B”: 2}

  • 架构A:int, B:int

  • 文件 2S3://bucket/table1/year=2018/data2.json

  • 文件内容{“C”: 3, “D”: 4}

  • 架构C: int, D: int

默认情况下,该爬网程序会创建两个名为 year_2017year_2018 的表,因为架构不够相似。但是,如果选项 Create a single schema for each S3 path (为每个 S3 路径创建单个架构) 处于选中状态,并且数据是兼容的,则爬网程序会创建一个表。该表具有架构 A:int,B:int,C:int,D:intpartitionKey year:string