6、Druid的Roll up详细介绍及示例

本文详细介绍了ApacheDruid的数据处理机制,特别是Roll-up聚合过程,如何在数据摄入时减小存储需求。文章通过实例展示了Druid如何利用位图索引加速条件和groupby查询,以及数据结构和查询流程。
摘要由CSDN通过智能技术生成

Apache Druid 系列文章

1、Druid(Imply-3.0.4)介绍及部署(centos6.10)、验证
2、Druid的入门示例(使用三种不同的方式摄入数据和提交任务)
3、Druid的load data 示例(实时kafka数据和离线-本地或hdfs数据)
4、java操作druid api
5、Druid配置文件详细介绍以及示例
6、Druid的Roll up详细介绍及示例



本文介绍了druid 的 rool-up过程以及位图索引构建过程、实际的应用过程。
本文分为1个部分,即介绍与示例。

一、介绍及示例

1、介绍

Apache Druid可以通过roll-up在数据摄取阶段对原始数据进行汇总。
Roll-up是对选定列集的一级聚合操作,它可以减小存储数据的大小。
本文将讨论在一个示例数据集上进行roll-up的结果。

  • Druid通过一个roll-up的处理,将原始数据在注入的时候就进行汇总处理
  • roll-up可以压缩我们需要保存的数据量
  • Druid会把选定的相同维度的数据进行聚合操作,可减少存储的大小
  • Druid可以通过 queryGranularity 来控制注入数据的粒度。 最小的queryGranularity 是 millisecond(毫秒级)

2、示例数据

Roll-up聚合前
在这里插入图片描述

Roll-up聚合后
在这里插入图片描述
1、位图索引

3、过程示例

以下为一个DataSource(表)中存储的数据

1)、原始存储数据及数据结构

数据结构说明:第一列为时间,Appkey和area都是维度列,value为metric列
在这里插入图片描述

2)、摄入Druid

按天聚合后的数据,如下。
说明:Druid会在导入阶段自动对数据进行Rollup,将维度相同组合的数据进行聚合处理
在这里插入图片描述

3)、Druid聚合过程

Druid通过建立位图索引,来实现快速进行数据查找。
索引位图可以看作是HashMap<String, Bitmap>

  • key就是维度的取值
  • value就是该表中对应的行是否有该维度的值
    在这里插入图片描述

索引如下所示
说明:0表示行内没有,1表示行内有该数据
在这里插入图片描述

4)、条件查询过程示例

select 
    sum(value) 
from AD_areauser 
where 
    time=2023-01-04and 
    Appkey in (‘appkey1’,’appkey2’) and 
    area=’beijng’

执行过程

  • 根据时间段定位到segment
  • Appkey in (‘appkey1’, ‘appkey2’) and area=’beijing’查到各自的bitmap
    ( appkey1(1000) or appkey2(0110) ) and ( beijing (1100) ) = (1000 or 0110 ) and ( 1100 )= 1110 and 1100 =1100
  • 符合条件的列为第一行和第二行,这两行的 sum(value) 的和为26.

5)、group by查询过程示例

select 
    area, 
    sum(value) 
from AD_areauser 
where 
    time=2023-01-04and  
    Appkey in (‘appkey1’,’appkey2’) 
group by area

执行过程

  • 根据时间段定位到segment
  • Appkey in (‘appkey1’,’appkey2’)查到各自的bitmap appkey1(1000) or appkey2(0110) = ( 1110 )
  • 将第一行、第二行、第三行取出来
  • 在内存中做分组聚合,结果为:beijing:26, shanghai:13

以上,介绍了roll up的过程以及位图索引的实现过程。

Druid 是一个开源的高性能实时分析数据库,它提供了丰富的配置选项来满足不同场景的需求。Druid 的配置文件包括了多个部分,下面将详细介绍并给出示例。 1. 数据源配置:数据源配置是 Druid 中最重要的部分之一,其中包括了数据输入输出格式、数据源名称、数据连接信息等。例如: ```json { "dataSources" : { "exampleDataSource" : { "type" : "jdbc", "driver" : "com.mysql.jdbc.Driver", "url" : "jdbc:mysql://localhost:3306/mydb", "user" : "username", "password" : "password" } } } ``` 2. 查询配置:查询配置用于指定查询的相关参数,包括了查询间隔、查询超时时间、查询缓存策略等。例如: ```json { "queryConfig" : { "interval" : "PT1H", "timeout" : "PT30S", "cacheEnable" : true, "cacheSize" : 10000 } } ``` 3. 集群配置:集群配置用于指定 Druid 的集群信息,包括了节点数量、节点角色、集群管理端口等。例如: ```json { "cluster" : { "nodes" : ["node1", "node2", "node3"], "role" : "coordinator", "port" : 8081 } } ``` 4. 监控配置:监控配置用于指定 Druid 监控的相关信息,包括了监控端口、监控地址、监控数据存储路径等。例如: ```json { "monitoring" : { "port" : 8083, "address" : "localhost", "storagePath" : "/var/druid/monitoring" } } ``` 以上是 Druid 配置文件的一些常见部分和示例,通过合理的配置,可以使 Druid 在不同场景下发挥最佳性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一瓢一瓢的饮 alanchanchn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值