本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS Glue 表
您可以通过以下方式向数据目录中添加表定义:
-
运行一个连接到一个或多个数据存储的爬网程序,确定数据结构,并将表写入数据目录。爬网程序使用内置或自定义分类器识别数据的结构。您可以按计划运行您的爬网程序。有关更多信息,请参阅在 AWS Glue 中定义爬网程序:
-
使用 AWS Glue 控制台在 AWS Glue Data Catalog 中手动创建一个表。有关更多信息,请参阅在AWS Glue控制台上处理桌子:
-
在 AWS Glue API 中使用
CreateTable
操作在 AWS Glue Data Catalog 中创建表。有关更多信息,请参阅CreateTable 动作(Python:create_table): -
使用 AWS CloudFormation 模板。有关更多信息,请参阅AWS CloudFormation for AWS Glue:
-
迁移 Apache Hive 元存储。有关更多信息,请参阅 Hive Metastore 与之之间的迁移。AWS Glue Data Catalog
GitHub
当您使用控制台或 API 手动定义表时,您需要指定表架构和分类字段的值(指示数据源中数据的类型和格式)。如果爬网程序创建表,则数据格式和架构由内置分类器或自定义分类器确定。有关使用 AWS Glue 控制台创建表的更多信息,请参阅在AWS Glue控制台上处理桌子。
表分区
Amazon Simple Storage Service(Amazon S3)文件夹的 AWS Glue 表定义可以描述分区表。例如,要提高查询性能,分区表可以使用月份的名称作为键将每月数据分隔为不同的文件。在 AWS Glue 中,表定义包含表的分区键。当 AWS Glue 评估 Amazon S3 文件夹中的数据以编目表时,它确定是否添加了单个表或分区表。
您可以在表上创建分区索引以获取分区的子集,而不是加载表中的所有分区。有关使用分区索引的信息,请参阅在 AWS Glue 中使用分区索引。
以下 AWS Glue 所有条件都必须为 true,才能为 Amazon S3 文件夹创建分区表:
-
文件的架构类似,由 AWS Glue 确定。
-
文件的数据格式是相同的。
-
文件的压缩格式是相同的。
例如,您可能拥有一个名为 my-app-bucket
的 Amazon S3 存储桶,在其中您存储了 iOS 和 Android 应用程序销售数据。该数据按年、月和日分区。适用于 iOS 和 Android 销售的数据文件具有相同的架构、数据格式和压缩格式。在 AWS Glue Data Catalog 中,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
表资源链接
AWS Glue 控制台最近已更新。当前版本的控制台不支持表资源链接。 |
数据目录还可以包含表资源链接。表资源链接是指向本地或共享表的链接。目前,您只能在 AWS Lake Formation 中创建资源链接。创建到表的资源链接后,您可以在需要使用表名称的任何位置使用资源链接名称。与您拥有的或与您共享的表一起,表资源链接由 glue:GetTables()
返回,并在 AWS Glue 控制台的表页面上显示为条目。
数据目录还可以包含数据库资源链接。
有关资源链接的更多信息,请参阅《AWS Lake Formation 开发人员指南》中的创建资源链接。
使用爬网程序更新手动创建的数据目录表
您可能需要手动创建 AWS Glue Data Catalog 表,然后将它们保持为通过 AWS Glue 爬网程序进行更新。按计划运行的爬网程序可以添加新分区,并使用任何架构更改来更新表。这同样适用于从 Apache Hive 元存储中迁移的表。
要执行此操作,当您定义爬网程序时,不是指定一个或多个数据存储作为爬取源,而是指定一个或多个现有数据目录表。然后,爬网程序爬取由目录表指定的数据存储。在这种情况下,不会创建新表;而是更新手动创建的表。
以下是您可能需要手动创建目录表并将目录表指定为爬网程序源的其他原因:
-
您想要选择目录表名称,但不依赖于目录表命名算法。
-
在将其格式可能损坏分区检测的文件错误地保存在数据源路径的情况下,您可能希望阻止创建新表。
有关更多信息,请参阅爬网程序源类型:
数据目录表属性
AWS CLI 中已知的表属性或参数是未经验证的键值字符串。您可以在表上设置自己的属性,以支持在 AWS Glue 之外使用数据目录。其他使用数据目录的服务也可以执行该操作。AWS Glue 会在运行作业或爬网程序时设置一些表属性。除非另有说明,否则这些属性仅供内部使用,我们不支持它们继续以其当前形式存在,也不支持手动更改这些属性的产品行为。
更多有关 AWS Glue 爬网程序设置的表属性的信息,请参阅 爬网程序在数据目录表上设置的参数。