Lake Formation 中受管理的表 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Lake Formation 中受管理的表

中的元数据表Amazon Glue Data Catalog存储有关数据源和目标的信息,包括架构信息、分区信息、数据位置等。

数据目录支持两种类型的元数据表:受管理的表和不受管辖的表。受管理的表是唯一的Amazon Lake Formation. 在您创建表时,您可以指定表是否受管。

受管理的表提供以下高级功能:

ACID 事务

ACID(原子、一致、隔离和持久)事务保护创建或更新表等数据目录操作的完整性。它们还使多个用户能够同时、可靠地在 Amazon S3 数据湖中添加和删除对象,同时仍允许其他用户在相同的数据集上同时运行分析查询和机器学习 (ML) 模型,这些数据集返回一致性 up-to-date 结果。当受管理的表参与 Amazon S3 上数据湖的读取或写入操作时,这些操作会在事务中发生。

事务保护受管理的表元数据的完整性,包括表现— 用于定义表底层数据中的 Amazon S3 对象的元数据。集成Amazon诸如服务Amazon Athena支持受管理的表以在查询中提供一致的读取。要在你的Amazon GlueETL 作业,您可以在对数据湖执行任何读取或写入数据湖之前开始事务,并在完成时提交事务。

有关事务的更多信息,请参阅 在交易中读取数据湖并向数据湖写入

自动数据压缩

为了通过 ETL 任务和 Athena 等分析服务获得更好的性能,Lake Formation 自动将受管表的小型 Amazon S3 对象压缩为更大的对象。

默认情况下,对受管理的表启用压缩。您可以对单个受管理的表禁用压缩。有关更多信息,请参阅 受管理表的存储优化

时间旅行查询

如前所述,每个受管表都维护所包含 Amazon S3 对象的版本控制清单。清单的早期版本可用于时间旅行查询。您对 Athena 和中受管理的表进行查询Amazon GlueETL 作业可以包含一个时间戳,以表示您希望在特定日期和时间发现数据的状态。

要在 Athena 中提交时间旅行查询,请使用语法FOR SYSTEM_TIME AS OF timestamp要么FOR SYSTEM_VERSION AS OF version.

SELECT * FROM cloudtraildb.cloudtraildata FOR SYSTEM_TIME AS OF TIMESTAMP '2021-09-30 10:00:00'

有关 Athena 对受管理表进行时间旅行查询的更多示例,请参阅查询受管表中的Amazon Athena 用户指南.

在 ETL 作业脚本中,要使用时间旅行将数据读入动态帧中,请包含类似于以下内容的代码。

Python
dynamic_frame = glueContext.create_dynamic_frame_from_catalog(database = 'cloudtraildb, table_name = 'cloudtraildata, additional_options = {"asOfTime": "2021-09-30 10:00:00"})
Scala
val persons: DynamicFrame = glueContext.getCatalogSource(database = "cloudtraildb", tableName = "cloudtraildata", asOfTime="09-30-2021 10:00:00 UTC").getDynamicFrame()
注意

Lake Formation 权限没有版本控制。时间旅行查询始终遵守当前的权限。例如,如果时间 T1 的权限限制了对表列的访问权限,而当前权限(时间 T2)授予对所有列的访问权限,则针对时间 T1 上的数据的时间旅行查询将返回所有列。