在 AWS Glue 数据目录 中定义表 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

在 AWS Glue 数据目录 中定义表

您可以通过以下方式向 Data Catalog 中添加表定义:

当您使用控制台或 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() 并在 桌子 第页,共页 AWS Glue 话务台。

的 Data Catalog 还可以包含数据库资源链接。

有关资源链接的更多信息,请参阅 创建资源链接AWS Lake Formation 开发人员指南.

使用爬网程序更新手动创建的 Data Catalog 表

您可能需要手动创建 AWS Glue 数据目录 表,然后将它们保持为通过 AWS Glue 爬网程序进行更新。按计划运行的爬网程序可以添加新分区,并使用任何架构更改来更新表。这同样适用于从 Apache Hive 元存储中迁移的表。

要执行此操作,当您定义爬网程序时,不是指定一个或多个数据存储作为爬取源,而是指定一个或多个现有 Data Catalog 表。然后,爬网程序爬取由目录表指定的数据存储。在这种情况下,不会创建新表;而是更新手动创建的表。

以下是您可能需要手动创建目录表并将目录表指定为爬网程序源的其他原因:

  • 您想要选择目录表名称,但不依赖于目录表命名算法。

  • 在将其格式可能损坏分区检测的文件错误地保存在数据源路径的情况下,您可能希望阻止创建新表。

有关更多信息,请参阅 爬网程序源类型。)