Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门。本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
受管表的存储优化
默认情况下,创建受管控表时所有存储优化功能均处于启用状态。其中包括数据压缩和垃圾收集。
压缩数据
受管表的一个重要用例是流式传输数据或其他应用程序,在这些应用程序中,小块数据会持续进入 Amazon S3 数据湖。一个表可能会增长到数千个 Amazon S3 对象。每个受管控的表都保留一个表现它标识表中包含的所有 Amazon S3 对象。该清单经过版本控制和自动更新,以确保您始终看到一致的表视图。
数据压缩优化器会持续监控您的表分区,并在超过文件数量和文件大小的阈值时启动。Lake Formation 在不干扰并发查询的情况下进行压缩。目前,仅对 Parquet 格式的分区表支持压缩。
垃圾回收
受管表的另一项存储优化功能通过删除不再属于受管表的 Amazon S3 对象来帮助降低存储成本。如果在将对象添加到受管表的清单时取消事务,则不会自动清理这些对象。这是为了允许在无需重新生成数据的情况下重试交易。在某些情况下,最好从已取消的事务中移除对象。
要使用此功能DeleteObjectsOnCancel在调用 S3 之前PutObject. 这告诉 Lake Formation 异步删除这些文件以帮助节省成本。调用DeleteObjectsOnCancel提供在 Amazon S3 中止时从 Amazon S3 中删除对象的授权。此功能无法手动禁用。有关中止事务和移除不需要的对象的更多信息,请参阅回滚Amazon S3 写入.
使用存储优化的先决条件
必须先完成中所述的设置说明,然后才能使用数据压缩为使用受管控表的自动数据压缩做好准备.
为受管控的表禁用和重新启用数据压缩
为了提高 ETL 任务和分析服务的性能,Lake Formation 会自动将受管表中的小型 Amazon S3 数据元压缩为更大的对象。默认情况下,对受管控的表启用数据压缩。您可以对单个受管控的表禁用压缩,稍后再重新启用压缩。
可以使用 Lake Formation 控制台或 Lake Formation 控制台启用和禁用数据压缩Amazon CLI.
- Console
-
为受管控的表禁用或重新启用数据压缩
-
通过 https://console.aws.amazon.com/lakeformation/ 中打开 Lake Formation 控制台。
以数据湖管理员、表创建者或被授予以下权限的用户身份登录glue:UpdateTable许可和Lake FormationALTER桌上的权限。
-
在导航窗格中,选择表。
-
选择表名旁边的选项按钮操作菜单中编辑.
确保选择受管控的表。受管表的第一个版本Enabled (已启用)中的治理column.
-
在存储库的编辑表页面上,执行以下操作之一
-
选择Save(保存)。
- Amazon CLI
-
例如,要禁用压缩功能Amazon CLI命令。
aws update-table-storage-optimizer --database-name database-name --table-name table-name
--storage-optimizer-config '{"compaction" :{"is_enabled": "false"}}')
要为表重新启用数据压缩,请使用相似的代码,但将值设置为is_enabled到true.
检查受管理的表压缩状态
对于受管控的表,您可以查看已取消事务优化器的数据压缩状态和删除对象,方法是在控制台中查看该表,或者运行Amazon CLI命令。
- Console
- Amazon CLI
-
使用与以下类似的命令查看与特定表关联的所有加速的配置和上次运行状态。
aws list-table-storage-optimizers --database-name database-name --table-name table-name
以下是此命令的响应示例。
[
{
StorageOptimizerType: "compaction",
config: {
"state": "enabled"
},
errorMessage: "",
lastRunDetails: "lastRunTime: December 14, 2021. Compacted 1000 objects"
},
{
StorageOptimizerType: "garbage_collection",
config: {
"state": "disabled"
},
errorMessage: "IAM role is missing DeleteObject permissions",
lastRunDetails: "lastRunTime: December 14, 2021. Collected 1000 objects"
}
]