1 回答
- 最新
- 投票最多
- 评论最多
0
【以下的回答经过翻译处理】 “ICEBERG”表使用快照和元数据文件进行操作。
在全局范围内,它以与标准的EXTERNAL表不同的方式分发文件,甚至复制数据,并且通过一组json+avro元数据知道如何正确查询数据。(因此,读取所有这些文件比通过简单的Parquet Serde读取简单的EXTERNAL TABLE要复杂。后者仅读取Parquet文件的内部元数据以进行查询。)
对于单个示例数据集,这并不太明显,但您必须考虑到,使用ICEBERG存储会根据使用快速增加。 如果执行应用多个更新和一些删除的MERGE操作,则可以快速将S3上的磁盘空间增加一倍,并且性能将变得更不高效(因为数据将被分成多个快照/文件)。
(但是,使用OPTIMIZE命令...可以将性能恢复到ICEBERG表的初始状态,通过将文件合并成一个新文件并更新元数据来忽略旧文件)
使用ICEBERG有优点(简化维护,查询分区数据而不显式条件这些分区等)和缺点(读取效率不高,存储空间迅速增加等)。
尽管我不知道如何使用个人的VACUUM和OPTIMIZE自动磁盘空间优化,但是我知道它之后使用的文件更少,并且删除不再使用的文件不会破坏我的ICEBERG表。
如果目标是尝试获得一些性能,我建议设置PARQUET的压缩方式不同...但是这可能不会改变一切。(此外,如果您已经在表上执行了多个删除/插入,请尝试优化以修复性能)
相关内容
- AWS 官方已更新 8 个月前
- AWS 官方已更新 8 个月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 3 个月前