HLL
更新时间:2025-05-29
HLL 是用作模糊去重,在数据量大的情况性能优于 Count Distinct。HLL 的导入需要结合 hll_hash 等函数来使用。
使用示例
第 1 步:准备数据
创建如下的 csv 文件:test_hll.csv
                SQL
                
            
            11001|koga
21002|nijg
31003|lojn
41004|lofn
51005|jfin
61006|kon
71007|nhga
81008|nfubg
91009|huang
101010|buag
            第 2 步:在库中创建表
                SQL
                
            
            1CREATE TABLE testdb.test_hll(
2    typ_id           BIGINT          NULL   COMMENT "ID",
3    typ_name         VARCHAR(10)     NULL   COMMENT "NAME",
4    pv               hll hll_union   NOT NULL   COMMENT "hll"
5)
6AGGREGATE KEY(typ_id,typ_name)
7DISTRIBUTED BY HASH(typ_id) BUCKETS 10;
            第 3 步:导入数据
                SQL
                
            
            1curl --location-trusted -u <doris_user>:<doris_password> \
2    -H "column_separator:|" \
3    -H "columns:typ_id,typ_name,pv=hll_hash(typ_id)" \
4    -T test_hll.csv \
5    -XPUT http://<fe_ip>:<fe_http_port>/api/testdb/test_hll/_stream_load
            第 4 步:检查导入数据
使用 hll_cardinality 进行查询:
                SQL
                
            
            1mysql> select typ_id,typ_name,hll_cardinality(pv) from testdb.test_hll;
2+--------+----------+---------------------+
3| typ_id | typ_name | hll_cardinality(pv) |
4+--------+----------+---------------------+
5|   1010 | buag     |                   1 |
6|   1002 | nijg     |                   1 |
7|   1001 | koga     |                   1 |
8|   1008 | nfubg    |                   1 |
9|   1005 | jfin     |                   1 |
10|   1009 | huang    |                   1 |
11|   1004 | lofn     |                   1 |
12|   1007 | nhga     |                   1 |
13|   1003 | lojn     |                   1 |
14|   1006 | kon      |                   1 |
15+--------+----------+---------------------+
1610 rows in set (0.06 sec)
            