使用 HyperLogLog 草图 Amazon Redshift - Amazon Redshift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

使用 HyperLogLog 草图 Amazon Redshift

HyperLogLog 是用于估计多集合的基数的算法。基数 指多集合中不同值的数量。例如,在{4,3,6,2,6,4,3,6,2,2,3}的集合中,基数是4,具有明显的4,3,6和2的值。

的精度 HyperLogLog 算法(也称为m值)可影响估计基数的准确度。在基数估计期间, Amazon Redshift 使用的默认精度值为15。对于较小的数据集,此值最多可为26。因此,平均相对误差范围为0.01–0.6%。

在计算多集合基数时, HyperLogLog 算法生成称为HLL草图的构造。一种 HLL草图 封装有关多集合中不同值的信息。的 Amazon Redshift 数据类型HLLSKETCH表示此类草图值。此数据类型可用于将草图存储在 Amazon Redshift 表。此外, Amazon Redshift 支持可应用于HLLSKETCH值作为聚合和标量函数的操作。您可以使用这些函数提取HLLSKETCH的基数并组合多个HLLSKETCH值。

HLLSKETCH数据类型在从大型数据集中提取基数时提供显著的查询性能优势。您可以使用HLLSKETCH值预先聚合这些数据集并将其存储在表中。 Amazon Redshift 可以直接从存储的HLLSKETCH值中提取基数,而不访问底层数据集。

在处理HLL草图时, Amazon Redshift 执行优化,以最小化草图的存储器占用并最大化提取基数的精度。 Amazon Redshift 对HLL草图使用两个表示,稀疏和密集。HLLSKETCH以稀疏格式启动。随着新值插入到其中,其大小将增加。其大小达到密集表示的大小后, Amazon Redshift 自动将草图从稀疏转换为密集的。

Amazon Redshift 草图采用稀疏格式时,会导入、导出并打印JSON格式的HLLSKETCH。 Amazon Redshift 草图采用密集格式时,会导入、导出并打印Base64字符串。有关UNLOAD的更多信息,请参阅 卸载 HLLSKETCH 数据类型. 将文本或逗号分隔值(CSV)数据导入 Amazon Redshift,使用COPY命令。有关更多信息,请参阅加载HLLSKETCH数据类型

有关与一起使用的函数的信息 HyperLogLog,请参阅 HyperLogLog 功能.