本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 AWS Glue 数据目录 中定义表
您可以通过以下方式向 Data Catalog 中添加表定义:
-
运行一个连接到一个或多个数据存储的爬网程序,确定数据结构,并将表写入 Data Catalog。爬网程序使用内置或自定义分类器识别数据的结构。您可以按计划运行您的爬网程序。有关更多信息,请参阅定义爬网程序。
-
使用 AWS Glue 控制台在 AWS Glue 数据目录 中手动创建一个表。有关更多信息,请参阅在 AWS Glue 控制台上处理表。
-
在 AWS Glue API 中使用
CreateTable
操作在 AWS Glue 数据目录 中创建表。有关更多信息,请参阅CreateTable 操作 (Python: create_table)。 -
使用 AWS CloudFormation 模板。有关更多信息,请参阅使用 AWS CloudFormation 模板填充数据目录。
-
迁移 Apache Hive 元存储。有关更多信息,请参阅 上的 AWS Glue 数据目录Hive 元存储与
之间的迁移GitHub。
当您使用控制台或 API 手动定义表时,您需要指定表架构和分类字段的值(指示数据源中数据的类型和格式)。如果爬网程序创建表,则数据格式和架构由内置分类器或自定义分类器确定。有关使用 AWS Glue 控制台创建表的更多信息,请参阅在 AWS Glue 控制台上处理表。
表分区
Amazon Simple Storage Service (Amazon S3) 文件夹的 AWS Glue 表定义可以描述分区表。例如,要提高查询性能,分区表可以使用月份的名称作为键将每月数据分隔为不同的文件。在 AWS Glue 中,表定义包含表的分区键。当 AWS Glue 评估 Amazon S3 文件夹中的数据以编目表时,它确定是否添加了单个表或分区表。
您可以在表中创建分区索引,以提取分区的子集,而不是加载表中的所有分区。有关使用分区索引的信息,请参阅使用分区索引。
以下所有条件都必须为 true,AWS Glue 才能为 Amazon S3 文件夹创建分区表:
-
文件的架构类似,由 AWS Glue 确定。
-
文件的数据格式是相同的。
-
文件的压缩格式是相同的。
例如,您可能拥有一个名为 my-app-bucket
的 Amazon S3 存储桶,在其中您存储了 iOS 和 Android 应用程序销售数据。该数据按年、月和日分区。适用于 iOS 和 Android 销售的数据文件具有相同的架构、数据格式和压缩格式。在
AWS Glue 数据目录 中,AWS Glue 爬网程序使用年、月和日的分区键创建一个表定义。
my-app-bucket
的以下 Amazon S3 列表显示某些分区。=
符号用于分配分区键值。
my-app-bucket/Sales/year=2010/month=feb/day=1/iOS.csv my-app-bucket/Sales/year=2010/month=feb/day=1/Android.csv my-app-bucket/Sales/year=2010/month=feb/day=2/iOS.csv my-app-bucket/Sales/year=2010/month=feb/day=2/Android.csv ... my-app-bucket/Sales/year=2017/month=feb/day=4/iOS.csv my-app-bucket/Sales/year=2017/month=feb/day=4/Android.csv
表资源链接
还可以包含表的Data Catalog资源链接。表资源链接是指向本地或共享表的链接。目前,您只能在 AWS Lake Formation 中创建资源链接。在创建指向表的资源链接后,您可以在要使用表名称的任何位置使用该资源链接名称。除了您拥有或与您共享的表之外,glue:GetTables()
还将返回表资源链接并在 控制台的 Tables (表)AWS Glue 页面上显示为条目。
还可以包含数据库资源链接。Data Catalog
有关资源链接的更多信息,请参阅 https://docs.amazonaws.cn/lake-formation/latest/dg/creating-resource-links.html 中的创建资源链接AWS Lake Formation 开发人员指南。
使用爬网程序更新手动创建的 Data Catalog 表
您可能需要手动创建 AWS Glue 数据目录 表,然后将它们保持为通过 AWS Glue 爬网程序进行更新。按计划运行的爬网程序可以添加新分区,并使用任何架构更改来更新表。这同样适用于从 Apache Hive 元存储中迁移的表。
要执行此操作,当您定义爬网程序时,不是指定一个或多个数据存储作为爬取源,而是指定一个或多个现有 Data Catalog 表。然后,爬网程序爬取由目录表指定的数据存储。在这种情况下,不会创建新表;而是更新手动创建的表。
以下是您可能需要手动创建目录表并将目录表指定为爬网程序源的其他原因:
-
您想要选择目录表名称,但不依赖于目录表命名算法。
-
在将其格式可能损坏分区检测的文件错误地保存在数据源路径的情况下,您可能希望阻止创建新表。
有关更多信息,请参阅爬网程序源类型。