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)