首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏大数据-BigData

    RoaringBitmap介绍(中文翻译)

    原地址:https://github.com/RoaringBitmap/RoaringBitmap Bitsets,也称为bitmaps,通常用作快速数据结构。 ; public class Basic { public static void main(String[] args) { RoaringBitmap rr = RoaringBitmap.bitmapOf (1,2,3,1000); RoaringBitmap rr2 = new RoaringBitmap(); rr2.add(4000L,4255L); 请注意,您不应将 org.roaringbitmap 包中的类与 org.roaringbitmap.buffer 包中的类混用。 它们是不相容的。 然而,它们序列化到相同的输出。 extends RoaringBitmap> type) { RoaringBitmap bitmap = new RoaringBitmap(); try {

    2.7K30编辑于 2022-11-16
  • RoaringBitmap使用指南-Java快速入门教程

    概述 在本教程中,我们将了解RoaringBitmap。我们将使用对一组的一些基本操作作为RoaringBitmap的示例。 (1, 2, 3, 4, 5); RoaringBitmap B = RoaringBitmap.bitmapOf(4, 5, 6, 7, 8); RoaringBitmap union () { RoaringBitmap expected = RoaringBitmap.bitmapOf(4, 5); RoaringBitmap A = RoaringBitmap.bitmapOfRange () { RoaringBitmap expected = RoaringBitmap.bitmapOf(1, 2, 3); RoaringBitmap A = new RoaringBitmap (1, 6); RoaringBitmap B = RoaringBitmap.bitmapOfRange(4, 9); RoaringBitmap xor = RoaringBitmap.xor

    84800编辑于 2025-04-05
  • 来自专栏腾讯云数据库(TencentDB)

    大数据标签查询优化实战之pg_roaringbitmap

    本文主要基于PostgreSQL实现标签查询的优化实践,供大家参考 一步一步实操,可直接复制粘贴 pg_roaringbitmap是什么? pg_roaringbitmap是一个基于roaringbitmap而实现的压缩位图存储数据插件,支持roaring bitmap的存取、集合操作,聚合等运算。 roaringbitmap有什么用? roaringbitmap在在实际的业务当中常使用来存储用户的属性标签,增删改查这些属性标签,以及根据这些存储的用户的标签通过并集,交集等方法来筛选出特定的用户。 create extension roaringbitmap; 2、创建标签用户对应表 create table tag_uin_list( tagid int primary key, uin_offset int, uinbits roaringbitmap ); 3、根据之前的 标签表 插入10W条标签以及标签对应的用户数据。

    2.4K10编辑于 2022-01-18
  • 来自专栏可君的数据开发沉淀

    Flink基于两阶段聚合及Roaringbitmap的实时去重方案

    有的,这便是下面要介绍的RoaringbitmapRoaringbitmap介绍上文提到,Bitmap支持精确去重,其思想为:第0个比特表示数字0,第1个比特表示数字1,以此类推。 本文聚焦于Roaringbitmap的时空特性和使用,因此具体原理不表,如感兴趣可参考《高效压缩位图RoaringBitmap的原理与应用》与《RoaringBitmap数据结构及原理》。 >org.roaringbitmap</groupId> <artifactId>RoaringBitmap</artifactId> <version>0.9.21</version></ = new RoaringBitmap();RoaringBitmap response_ad_count_bitmap = new RoaringBitmap(); 然后在将每条数据封装进Java Bean 至于去重字段本身为int型的数据则直接放入Roaringbitmap即可,如若为long型也可以使用Roaringbitmap的64位版本Roaring64NavigableMap。

    4K51编辑于 2023-01-03
  • 来自专栏苏三说技术

    10亿QQ号如何去重?

    存储优势对比: 普通位图:10^10 / 8 / 1024/1024 ≈ 1.16 GB   RoaringBitmap:稀疏数据下可压缩至100-300 MB   六、生产级架构:Lambda架构 架构设计 7.2 存储计算 QQ号范围:10000 - 9999999999(约100亿) 分层设计: 第一层分片:100个区间(每区间1亿) 第二层分片:100个子区间(每区间100万) 第三层存储:RoaringBitmap       privatestaticfinalint L2 = ; // 二级分片       public LayeredBitmap() {           bitmaps = new RoaringBitmap ;           if (bitmaps[l1Index][l2Index] == null) {               bitmaps[l1Index][l2Index] = new RoaringBitmap ) - )));       return suffix % shardCount;   }   9.2 去重精度保障 9.3 成本优化建议 冷热分离:热数据用内存位图,冷数据存磁盘 压缩存储:使用RoaringBitmap

    32110编辑于 2025-07-17
  • 来自专栏Flink实战剖析

    不得不掌握的三种BitMap

    对此需要使用压缩bitmap,也就是roaringbitmapRoaringBitmap RoaringBitmap 是一种压缩bitmap,其思想就是采用高低位存储方式,将一个Int类型的数据转换为高16位与低16位,也就是两个short类型的数据,高位存储在一个 RoaringBitmap引入: <dependency> <groupId>org.roaringbitmap</groupId> <artifactId>RoaringBitmap< 使用示例: RoaringBitmap roaringBitmap = new RoaringBitmap(); for (int i = 1; i <= 4096; i++) { roaringBitmap.add : roaringBitmap.runOptimize(); 此时内部存储是一个RunContainer 这时候可能又出现了另外一个问题,RoaringBitmap处理的是int类型的数据,但是在实际中我们使用的都是

    80610编辑于 2022-04-18
  • 来自专栏公有云大数据平台弹性 MapReduce

    Clickhouse在大数据分析平台-留存分析上的应用

    一、Roaringbitmap简介 二、思路与实现 1.数据构建 2.查询过程 3.实践效果 三、总结与思考 你可能听说过Growingio、神策等数据分析平台,所在部门也在构建自己的大数据分析平台MVP 下面主要分3个部分详细介绍:Roaringbitmap简介、思路与实现、总结与思考 一、Roaringbitmap简介 下面先简单介绍一下高效的位图压缩方法Roaringbitmap。 也就是说,一个roaringbitmap就是很多container的集合。 而Roaringbitmap对数据进行了压缩,其求交的速度在绝大部分情况下比bitmap还要快,因此这里我们考虑使用Roaringbitmap的方法来对计算留存的过程进行优化。 PS:楼主是刚入ch坑的小白一只,对于以上内容,有不正确/不严谨之处请轻拍~ 欢迎交流~ 参考资料: 解析常见的数据分析模型——留存分析 RoaringBitmap数据结构及原理 高效压缩位图RoaringBitmap

    2.5K20发布于 2021-01-07
  • 来自专栏vivo互联网技术

    高效压缩位图在推荐系统中的应用

    2.3 RoaringBitMap RoaringBitMap和bloom filter本质上都是使用bitmap进行存储。 而RoaringBitMap是直接将元数据进行存储压缩,其准确率是100%的。 所以下文我们来着重分析下RoaringBitMap为什么为如此高效。 在特别稀疏的情况下,用RoaringBitMap效果可能还更差。 最终我们选择了RoaringBitMap这个结构进行存储,这是因为游戏推荐业务保存的过滤集合中,游戏id在大趋势上是自增整数型的,且排列不是十分稀疏,利用RoaringBitMap的压缩特性能很好的节省空间开销

    69320编辑于 2022-04-19
  • 来自专栏腾讯云大数据

    Clickhouse在大数据分析平台-留存分析上的应用

    优化方案的核心是在Clickhouse中使用Roaringbitmap对用户进行压缩,将留存率的计算交给高效率的位图函数,这样既省空间又可以提高查询速度。 希望本实践方案可以给你带来一些帮助和启示。 下面主要分3个部分详细介绍:Roaringbitmap简介、思路与实现、总结与思考。 一、Roaringbitmap 简介 下面先简单介绍一下高效的位图压缩方法Roaringbitmap。 也就是说,一个roaringbitmap就是很多container的集合 [3],具体细节可以自行查看文末的参考文章。 而Roaringbitmap对数据进行了压缩,其求交的速度在绝大部分情况下比bitmap还要快,因此这里我们考虑使用Roaringbitmap的方法来对计算留存的过程进行优化。 (4).Roaringbitmap压缩 对于用户操作流水数据,我们先建一个可以存放bitmap的表table_oper_bit,建表语句如下: ?

    4K30发布于 2020-08-07
  • 来自专栏张叔叔讲互联网

    人群创建的基础:画像标签BitMap

    图片BitMap是一种位图映射方案,其具体实现方式有多种,在Java语言中可以使用RoaringBitMap进行工程开发。 图片Hive表数据转为RoaringBitMap依赖开源工具包hive-bitmap-udf.jar,其中UDF函数to_bitmap可以将UserId列表转换为RoaringBitMap对象并以binary 从ClickHouse中读取到string类型的bitmap数据,借助bytesToBitMap函数可以实现string到RoaringBitMap的转换。 多个RoaringBitMap可以在内存中直接进行交、并、差操作,最终实现人群的创建。 to_bitmap(user_id)FROMuserprofile_demo.gender_labelWHEREp_date = '2022-08-01'GROUP BYgenderbyte[],string以及RoaringBitMap

    2.3K11编辑于 2023-10-17
  • 淘宝闪购实时分析黑科技:StarRocks + Paimon撑起秋天第一波奶茶自由

    通过 StarRocks 的 Bitmap 相关函数直接查询存储在 Paimon 中的 RoaringBitmap 数据,大幅提升了实时 UV、多数据域分析的数据新鲜度和查询性能。 RoaringBitmap 是一种高效压缩位图结构,专为快速存储和操作大规模整数集合设计。 它通过智能分桶和动态容器选择,在空间压缩和计算性能之间实现最佳平衡,在当下主流的大数据计算和存储引擎中,RoaringBitmap 也被越来越广泛的应用。 4.2 RoaringBitmap 去重适用场景以下均针对去重指标计算场景,可直接 sum 或 count 的指标不在讨论范围内。 4.4 RoaringBitmap 实践总结借助 StarRocks 丰富的 Bitmap 函数和 Paimon 的流读流写能力,我们利用 RoaringBitmap 实现了实时场景的高效去重计算。

    64410编辑于 2025-09-04
  • 来自专栏未知之路-技术杂记

    位图bitmap的改进版:Roaring Bitmap

    使用方式各编程语言的API;https://www.roaringbitmap.org/https://roaringbitmap.readthedocs.io/en/latest/index.html 参考推荐https://github.com/RoaringBitmap/RoaringBitmap/tree/master/RoaringBitmaphttps://zhuanlan.zhihu.com

    3.5K40编辑于 2023-01-09
  • 来自专栏编程从踩坑到跳坑

    Clickhouse添加bitmap分页函数

    # 开干 通过阅读Clickhouse的源码,步骤如下: 实现分页 在Clickhouse中bitmap指向的class是RoaringBitmapWithSmallSet ,bitmap底层使用的是RoaringBitmap ,github地址:https://github.com/RoaringBitmap/CRoaring.gitopen in new window ,RoaringBitmapWithSmallSet对

    69930编辑于 2023-10-21
  • 来自专栏得物技术

    得物推荐引擎 - DGraph

    图片 图7 Invert 索引 基于开源 RoaringBitmap RoaringBitmap 将一个文档 ID(uint32)分为高位和低位,高 16 位的 ID 用来建一级索引,低 16 位的 ID 用来构建二级索引(原文称之为 Container),在二级索引中, Kmeans 聚类后,引擎会以每个中心向量(centroids)为基点,构建倒排,倒排的数据结构也是 RoaringBitmap,同一个聚簇的向量都回插入同一个 RoaringBitmap 里面。

    80420编辑于 2023-08-30
  • 来自专栏京东技术

    百万并发场景中倒排索引与位图计算的实践

    举一个极端case,若千万规则库中命中的行ID是第1000万位,按照传统方式BitSet进行存储,需要消耗1.2MB空间,在内存中占用存在严重浪费,有没有压缩优化方案,在RoaringBitMap压缩位图方案中我们找到 ,相同场景在压缩位图方式下仅占144bytes;即使在1000万的位图空间,随机存储1万个值,两者比也是在31K vs 2MB,近100倍的差距,总的来说RoaringBitMap压缩率非常大。 RoaringBitMap本质上是将大块的bitmap拆分成各个小块,其中每个小块在需要存储数据的时候才会存在,所以当进行交集或并集运算的时候,RoaringBitMap只需要去计算存在的块而不需要像bitmap

    77810编辑于 2024-01-23
  • 来自专栏京东技术

    营销系统黑名单优化:位图的应用解析

    2.RoaringBitmap 遗憾的是,BitSet会占用过多内存。 RoaringBitmap是一种压缩位图,其性能往往优于 WAH、EWAH 或Concise等传统压缩位图。在某些情况下,RoaringBitmap的速度可以快上数百倍,而且压缩效果往往要好得多。 如果使用RoaringBitmap只存储一个数值 200000000,只需要144B的内存。 RoaringBitmap将一个int数值x划分为高16位和低16位,高16位下标可以通过x >>> 16得到,高位container中维护了一个数组,数组的元素中存储了低位container,低位container

    61110编辑于 2024-03-06
  • 来自专栏vivo互联网技术

    超有趣!上周六的 es 深圳 Meetup 发生了什么事儿?

    内容包括技术选型、如何基于 Hive + ES 构建数据系统、亿级用户下系统的瓶颈及优化、RoaringBitmap 在该系统的落地、自定义 ES Plugin 的实现。 分享嘉宾比较细致地介绍了在ES的查询优化中,如何借助开源的 RoaringBitmap 来实现ES插件,从而把ES查询转换为位运算来显著加速查询速度。可谓是今天的“Bitmap”达人了!

    98350发布于 2019-05-15
  • 来自专栏山行AI

    一文读懂比BitMap有更好性能的Roaring Bitmap

    经过测试对比后发现Roaringbitmap与其他bitmap压缩算法相比往往表现得更好。8. 原生的 RoaringBitmap 只存储整形数据,32 位的 RoaringBitmap 最大的数据存储量是 2147483647。 像订单、流量这样的数据量可以采用 64 位的 RoaringBitmap,但在性能上 32 位的效率在同等条件下要优于 64 位。 概要 Bitmap索引经常被用在数据库和搜索引擎中。 我们的Roaring-bitmap实现的代码和数据在http://roaringbitmap.org/上免费提供。 高低位实现 32位的RoaringBitmap获取高低16位的实现: public static RoaringBitmap addOffset(final RoaringBitmap x

    10.6K20发布于 2020-11-26
  • 来自专栏一名叫大蕉的程序员

    大数据计数原理1+0=1这你都不会算(八)No.60

    论文连接:链接: https://pan.baidu.com/s/1pKGrNcf 密码: s449 GitHub地址:https://github.com/RoaringBitmap/RoaringBitmap

    1K70发布于 2018-02-05
  • 来自专栏张叔叔讲互联网

    画像平台人群创建方式-规则人群创建

    其中代码重点是将字符串格式的数据转换为RoaringBitMap,并通过其自带的and函数进行交集计算。 rs.next()) {long userId = rs.getLong(1);crowd.add(userId);}-- 通过BitMap返回所筛选的UserId,返回格式为byte[],需要反序列化为RoaringBitMap

    1.7K00编辑于 2023-10-18
领券