美文网首页
druid roll-up 介绍

druid roll-up 介绍

作者: pcqlegend | 来源:发表于2018-06-29 18:32 被阅读0次

    参考 http://druid.io/docs/0.12.1/design/ 具体的例子
    Segment sampleData_2011-01-01T01:00:00:00Z_2011-01-01T02:00:00:00Z_v1_0 contains

    timestamp             publisher          advertiser  gender  country  click  price
    2011-01-01T01:01:35Z  bieberfever.com    google.com  Male    USA      0      0.65
    2011-01-01T01:03:63Z  bieberfever.com    google.com  Male    USA      0      0.62
    2011-01-01T01:04:51Z  bieberfever.com    google.com  Male    USA      1      0.45
    2011-01-01T01:00:00Z  ultratrimfast.com  google.com  Female  UK       0      0.87
    2011-01-01T02:00:00Z  ultratrimfast.com  google.com  Female  UK       0      0.99
    2011-01-01T02:00:00Z  ultratrimfast.com  google.com  Female  UK       1      1.53
    

    在例子数据中的各种单独的数据不是很有意义,因为这样的数据有万亿级别。但是这样数据的汇总结果却可以产出有价值的信息。Druid 会使用一个称之为 roll-up的程序在数据读入的时候进行汇总。roll-up是对于选定的所有dimensions 进行一级聚合,用伪代码标识就是 :

    GROUP BY timestamp, publisher, advertiser, gender, country
      :: impressions = COUNT(1),  clicks = SUM(click),  revenue = SUM(price)
    

    原始数据聚合后的结果形式如下:

    timestamp             publisher          advertiser  gender country impressions clicks revenue
     2011-01-01T01:00:00Z  ultratrimfast.com  google.com  Male   USA     1800        25     15.70
     2011-01-01T01:00:00Z  bieberfever.com    google.com  Male   USA     2912        42     29.18
     2011-01-01T02:00:00Z  ultratrimfast.com  google.com  Male   UK      1953        17     17.31
     2011-01-01T02:00:00Z  bieberfever.com    google.com  Male   UK      3194        170    34.01
    
    

    现实情况下,我们可以看到 rolling up 数据可以极大的减少需要存储的数据大小(多达 100倍),druid 将会在数据读入的时候进行roll up 以减少需要存储数据的大小。存储数据量的减少也会有一定的副作用,就是我们无法查询单独的数据了。换句话说,rollup的粒度是你可以获取数据的最小粒度并且数据按照这个粒度存储。因而,druid 读入的说明定义 granularity 为 数据的查询粒度。最小的查询粒度是ms级别。

    Roll-up 方式

    Druid 支持两种方式,perfect roll-upbest-effort roll-up. perfect roll-up 方式,Druid 保证数据在读入的时候就会被 完美 聚合。然而 best-effort roll-up 并不会 完美聚合 ,因此 多个segements 会包含多行数据,而这些数据在 perfect roll-up 中 属于同一个segment。因为这些行具有相同的维度值,并且时间戳落在相同的时间窗口内。
    perfect roll-up 方式 在数读入的时候如果没有指定一个ingestionSpec 会 包含一个额外的预处理步骤去决定时间窗口和分片。这个预处理的步骤通常会扫毛所有的数据,这样才会产生读入的时间。
    相反的, best-effort roll-up 不需要预处理步骤,但是读入的数据会大于 perfect roll-up。

    All types of streaming indexing (i.e., realtime index task, kafka indexing service, ...) run with this mode.

    最后, the native index task 支持两种方式,你可以选择适合你应用的任何一个。

    相关文章

      网友评论

          本文标题:druid roll-up 介绍

          本文链接:https://www.haomeiwen.com/subject/mgaayftx.html