Pinot fasthll и differentcounthll возвращает разные значения - PullRequest
0 голосов
/ 14 марта 2020

мы используем pinot hll, и нам предложили переключиться с fasthll на Differentcounthll, но мы получили очень другой счет, при том же условии, что у нас разница в 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"
    }]

Кто-нибудь может подсказать, в чем разница между ними?

1 Ответ

1 голос
/ 02 апреля 2020

Пожалуйста, обратитесь к pinot-issue-5153 .

FastHll преобразует одну строку в объект гиперлогога, который может представлять тысячи уникальных значений. DistinctCountHLL обрабатывает строку как значение, а не как объект гиперлогога, поэтому он возвращает приблизительное количество уникальных сериализованных строк гиперлогога, значение должно быть близко к общему количеству отсканированных.

fasthll устарела из-за низкой производительности десериализации. Вы можете сгенерировать тип BYTES для сериализованного HyperLogLog, используя org. apache .pinot.core.common.ObjectSerDeUtils.HYPER_LOG_LOG_SER_DE.serialize (hyperLogLog), и запросить его с divercounthll

...