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 任务,在对数据湖执行任何读取或写入操作之前先开始事务,并在事务完成后提交事务。

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

自动数据压缩

为了提高所管表中的小型 Amazon S3 对象的性能,Lake Formation 自动将受管表中的小型 Amazon S3 对象压缩为更大的对象。

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

时间旅行查询

如前所述,每个受管表都维护所包含 Amazon S3 对象的版本控制清单。清单的早期版本可用于时间旅行查询。您对 Athena 和 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", additional_options = JsonOptions("""{"asOfTime": "2021-09-30 10:00:00"}""") ).getDynamicFrame()
注意

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