跳至内容

AWS Glue 爬网程序如何检测架构?

2 分钟阅读
0

当我运行 AWS Glue 爬网程序时,爬网程序会使用相似的架构创建多个表。我想知道爬网程序如何检测架构。

解决方法

当您运行 AWS Glue 爬网程序时,爬网程序会完成以下步骤:

  1. 爬网程序对数据进行分类。
  2. 爬网程序将数据分组到表或分区中。
  3. 爬网程序将元数据写入 AWS Glue Data Catalog。

要了解爬网程序的作用及其如何检测架构,请查看以下信息。

定义爬网程序

在定义 AWS Glue 爬网程序时,您可以选择一个或多个自定义分类器来评估数据格式以推断架构。在爬网程序运行时,爬网程序会使用列表中的第一个分类器成功识别您的数据存储,从而为您的表创建架构。在定义爬网程序之前,必须定义自定义分类器。在爬网程序运行时,爬网程序会使用您定义的自定义分类器在数据存储中查找匹配项。与每个分类器的匹配都会生成一个置信度。如果在处理过程中分类器返回 certainty=1.0,则表示爬网程序百分之百确定该分类器可以创建正确的架构。在这种情况下,爬网程序不会再调用任何其他分类器,然后会使用与自定义分类器匹配的分类器创建一个表。

有关更多信息,请参阅定义和管理分类器

爬网程序中的架构检测

在爬网程序首次运行期间,爬网程序会读取前 1,000 条记录或每个文件的前一兆字节来推断架构。读取的数据量取决于文件格式和有效记录的可用性。例如,如果输入文件是 JSON 文件,则爬网程序会读取该文件的前 1MB 来推断架构。如果爬网程序在文件的前 1MB 内读取到有效记录,则爬网程序会推断出架构。如果爬网程序在读取 1MB 之后仍无法推断出架构,则会继续以 1MB 为增量读取最多 10MB 的文件。对于 CSV 文件,爬网程序会读取前 1000 条记录或前 1MB 的数据,以先到者为准。对于 Parquet 文件,爬网程序直接从文件中推断架构。爬网程序会将从所有子文件夹和文件中推断出的架构进行比较,然后创建一个或多个表。当爬网程序创建表时,爬网程序会考虑以下因素:

  • 数据兼容性,用于检查数据是否具有相同的格式、压缩类型和包含路径。
  • 架构相似度,用于检查架构在分区阈值和不同架构数量方面的相似程度。

要让爬网程序判定架构相似,必须满足以下条件:

  • 分区阈值高于 0.7 (70%)。
  • 不同架构(在此上下文中也称为“集群”)的最大数量不超过 5。

爬网程序在文件夹级别推断架构,并会比较所有文件夹的架构。如果比较的架构匹配的分区阈值高于 70%,则这些架构将表示为表的分区。如果不匹配,则爬网程序会为每个文件夹创建一个表,从而导致表数量增多。

示例场景

示例 1

在以下示例中,文件夹 DOC-EXAMPLE-FOLDER1 有 10 个文件,其中 8 个文件的架构为 SCH_A,2 个文件的架构为 SCH_B

假设这些文件与以下示例类似:

SHC_A:

{ "id": 1, "first_name": "John", "last_name": "Doe"}{ "id": 2, "first_name": "Li", "last_name": "Juan"}

SCH_B:

{"city":"Dublin","country":"Ireland"}{"city":
`"Paris","country":"France"}`When the crawler crawls the Amazon Simple Storage Service (Amazon S3) path **s3://DOC-EXAMPLE-FOLDER1**, the crawler creates one table. The table comprises columns of both schema **SCH\_A** and **SCH\_B**. This is because 80% of the files in the path belong to the **SCH\_A** schema, and 20% of the files belong to the **SCH\_B** schema. Therefore, the schema meets the partition threshold value. Also, the number of different schemas doesn't exceed the number of clusters, and the schema doesn't exceed the cluster size limit.

示例 2

在以下示例中,文件夹 DOC-EXAMPLE-FOLDER2 有 10 个文件,其中 7 个文件的架构为 SCH_A,3 个文件的架构为 SCH_B

当爬网程序爬取 Amazon S3 路径 s3://DOC-EXAMPLE-FOLDER2 时,爬网程序会为每个文件创建一个表。这是因为 70% 的文件属于架构 SCH_A,而 30% 的文件属于架构 SCH_B。这意味着该架构未达到分区阈值。

**注意:**您可以在 Amazon CloudWatch 中查看爬网程序日志,获取已创建表的相关信息。

爬网程序选项

在自定义爬网程序行为时,您可以选择以下选项之一:

  • **创建单一架构:**您可以使用 Create a single schema for each S3 path(为每个 S3 路径创建单一架构)选项将爬网程序配置为忽略架构相似度并创建单一架构。有关详细信息,请参阅为每条 Amazon S3 包含路径创建单个架构
    **注意:**如果爬网程序检测到数据不兼容,则爬网程序仍会创建多个表。
  • **指定表位置:**您可以使用表级爬网程序选项来指定表的位置以及分区的创建方式。有关更多信息,请参阅指定表位置和分区级别

相关信息

使用爬网程序填充 Data Catalog

自定义爬网程序行为

AWS 官方已更新 4 个月前