IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Doris-bitmap的应用场景 -> 正文阅读

[大数据]Doris-bitmap的应用场景

Doris count 的精确去重

去重的常规的方法

  1. 堆机器
  2. Cache
  3. 优化 CPU 执行引擎 (向量化,SIMD,查询编译等)
  4. 支持 GPU 执行引擎
  5. 预计算

?聚合指标必须支持上卷,去重指标要支持上卷聚合,就必须保留明细,不能只保存一个最终的去重值,所以考虑引入bitmap

优点:

1,查询时io,cpu,内存,网络资源显著减少,不会随着数据规模线性增加

存在的问题?

1,内存和存储的消耗

2,只支持int类型

解决的办法

1,压缩,业界普遍采用的bitmap库是Roaring Bitmap?

Roaring Bitmap 核心思路,就是根据数据的不同特征采用不同的存储或者压缩方式

?

2,将其他类型映射成int?

在做字典映射时,使用比较广泛的数据结构是 Trie 树。Trie 树又叫前缀树或字典树。

?

这种方案中全局字典本身是一张 Hive 表,Hive 表有两个列,一个是原始值,一个是编码的 Int 值,然后通过上面的 4 步就可以通过 Spark 或者 MR 实现全局字典的更新,和对事实表中 Value 列的替换。

基于 Hive 表的全局字典相比基于 Trie 树的全局字典的优点除了可以分布式化,还可以实现全局字典的复用。 但是缺点也是显而易见,相比基于 Trie 树的全局字典,会使用多几倍的资源,因为原始事实表会被读取多次,而且还有两次 Join。

Doris bitmap 具体使用

计算pv, 为了更好的加速效果建 rollup

CREATE TABLE `bitmap2pv` (
`dt` int(10),
`page` varchar(255),
`userId` bitmap bitmap_union
)
AGGREGATE KEY(`dt`, page)
DISTRIBUTED BY HASH(`dt`) BUCKETS 100;

ALTER TABLE bitmap2pv ADD ROLLUP pv (page, userId);

查询:

select bitmap_count(bitmap_union(userId)) from bitmap2pv;

select bitmap_union_count(userId) from bitmap2pv;

select bitmap_union_int(id) from bitmap2pv

BITMAP_UNION(expr) : 计算两个 Bitmap 的并集,返回值是序列化后的 Bitmap 值 BITMAP_COUNT(expr) : 计算 Bitmap 的基数值 BITMAP_UNION_COUNT(expr): 和 BITMAP_COUNT(BITMAP_UNION(expr)) 等价 BITMAP_UNION_INT(expr) : 和 COUNT(DISTINCT expr) 等价 (仅支持 TINYINT,SMALLINT 和 INT)?

插入:

insert into bitmap_table1 (id, id2) VALUES (1001, to_bitmap(1000)), (1001, to_bitmap(2000));

insert into bitmap_table1 select id, bitmap_union(id2) from bitmap_table2 group by id;

insert into bitmap_table1 select id, bitmap_hash(id_string) from table;

Doris bitmap在用户行为分析上的应用

模型:

Who(谁)、What(做了什么行为)、When(什么时间)、Where(在哪里)、Why(目的是什么)、How(通过什么方式),How much (用了多长时间、花了多少钱)。

一般为一张event(行为日志表),一张profile(用户信息表)

实现方式:

1,数据库join

2,基于明细数据的 UDAF实现

3,基于bitmap的 UDAF实现

可以用 1 个 bit 位表示一个用户,那么 Bitmap 的交,并,差,对称差集等运算都可以和大多数用户行为模型对应起来,并且 Bitmap 的交,并,差,对称差集运算可以借助 SIMD 指令加速,是很高效的。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 12:53:31  更:2021-12-13 12:56:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:57:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码