Pinot fasthll和distinctcounthll返回不同的值



我们正在使用pinot hll,并被建议从fasthll切换到distinctcounthll,但我们得到的计数非常不同,在相同的条件下,我们有1000倍的差异。示例:

SELECT fasthll(my_hll), distinctcounthll(my_hll)
FROM counts_table WHERE timestamp >= 1500768000

我得到的结果:

"aggregationResults": [
{
"function": "fastHLL_my_hll",
"value": "68685244"
}, {
"function": "distinctCountHLL_my_hll",
"value": "50535"
}]

有人能告诉我他们之间有什么大区别吗?

请参阅引脚-issue-5153。

FastHll将把一个字符串转换成一个hyperloglog对象,该对象可能表示一千个唯一值。DistinctCountHLL将字符串视为一个值,而不是hyperloglog对象,因此它将返回多少个唯一的hyperloglog序列化字符串的近似值,该值应该接近扫描的总数。

fasthll由于反序列化的低性能而被弃用。您可以使用org.apache.pinot.core.common.ObjectSerDeUtils.HYPER_LOG_LOG_SER_DE.serialize(HyperLogLog(为序列化的HyperLogLog生成BYTES类型,并使用distinctcounthll 进行查询

相关内容

  • 没有找到相关文章

最新更新