为每条 Amazon S3 包含路径创建单个架构 - AWS Glue

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

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

为帮助说明此选项,假设您使用包含路径 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

AWS Management Console
  1. 登录 AWS Management Console,然后打开 AWS Glue 控制台,网址为:https://console.aws.amazon.com/glue/

  2. 数据目录下选择爬网程序

  3. 配置新爬网程序时,在输出和计划下,选择高级选项下的为每条 S3 路径创建单个架构选项。

AWS CLI

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

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

aws glue update-crawler \ --name myCrawler \ --configuration '{"Version": 1.0, "Grouping": {"TableGroupingPolicy": "CombineCompatibleSchemas" }}'
API

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

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

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