Presto 之 BTreeIndex 索引代码走读

news2024/12/24 11:32:09

一. 前言

        本文主要介绍在Presto(OpenLookeng)中的BTree索引的代码实现。关于BTree索引原理的介绍可以参考官网资料openLooKeng documentation。

二. BTreeIndex 索引建立

         在Presto中,BTreeIndex 索引是通过mapdb中的BTreeMap数据结构实现的,其使用和普通的Map没什么区别,只是BTreeMap是有序的。Presto建立BTreeIndex的BTreeMap中时候,key值设计为索引列所有数据的distinct值,value值为Stripe symbol的counter,为1,2,3...等一个累增的数字(其实value的信息在Btree索引使用中几乎没起到什么作用,过滤的时候主要是依赖key值和过滤条件匹配实现的)。

     比如对于如下表和数据:

  建立后索引后,BTreeMap的数据为:

       在Presto中,BTreeIndex 索引建立的流程基本和Presto 之Bitmap索引代码走读_王飞活的博客-CSDN博客_presto索引 一样,主要的流程如下:

  

PartitionIndexWriter::addData
    fillDataMap
        dataMap.putIfAbsent
          persist
            partitionIndex.addKeyValues
               source = new TreeSet

三. 使用BTreeIndex 索引进行数据过滤

        使用BTreeIndex 进行数据过滤的原理较为简单,Presto在处理split之前,先根据谓词过滤条件到BTreeMap中能够匹配到数据,能匹配到数据,则保留该split,否则,可以将整个split都过滤掉。其实现是在BTreeIndex::lookUp实现的,原理和其他索引也是基本一样的,可以参考此文章:Presto 之Bitmap索引代码走读_王飞活的博客-CSDN博客_presto索引

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/132682.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【java入门系列一】java基础

学习记录🤔写在前面JDK\JREPython有没有虚拟机?第一个code规范学习方法转义符号注释讨论总结谢谢点赞交流!(❁◡❁)更多代码: Gitee主页:https://gitee.com/GZHzzz博客主页: CSDN:https://blog.…

13---SpringBoot整合JWT,实现登录和拦截

1、 JWT简介 什么是JWT? JWT(JSON Web Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证&…

在Ubuntu上安装Azure DevOps代理程序

Contents1 概述2. 安装Ubuntu 18.04操作系统3. 安装Azure DevOps Server 代理3.1 安装Azure DevOps Server 代理3.2 以服务方式运行代理1. 概述Ubuntu是一个以桌面应用为主的Linux操作系统,目前在不适用微软Windows的企业中,ubuntu被广泛应用在个人电脑中…

网络原理4 数据链路层

文章目录mac地址网络原理的总结在数据链路层中,最主要的就是以太网协议这里的目的IP和原地址都是mac地址 mac地址 首先要知道什么是Mac地址,mac地址也叫做物理地址或以太网地址,它是一个用来确认网络设备位置的位置,一个网卡就会…

javaWeb——第一章概述

目录 1.1 软件的分类 1.2 软件架构 1.3 web软件 1.4 web程序 web服务器: Tomcat: 扩展 Java web就是窗口和程序之间的交互: 1.1 软件的分类 系统软件 应用软件 介于两者之间的中间件(插件) 1.2 软件架构 B/S 服务器与浏…

ZC706P+ADRV9009连接RADIOVERSE详解之三

做好SD卡映像,连接好硬件之后,我们就可以尝试软件操作了。 步骤1:设置好网络 打开软件界面我们看到,板子默认的地址为192.168.1.10 端口号为55555.我们一定也设置跟板子连接的以太网口处于192.168.1网段,并且子网掩码…

【ESP32+freeRTOS学习笔记-(四)任务调度机制】

目录1 、什么是任务的调度机制1.1 概念1.2 三种算法1.3 决定算法的宏2、基本词条解释3、调度算法解释3.1 具有时间片的优先级抢先调度 Prioritized Pre-emptive Scheduling with Time Slicing3.1.1 图解高优先级任务抢占低优先级任务3.1.2 图解具有时间片的优先级抢占3.1.3 总结…

如何通过少量样本推断整体业务情况

在产品运营中非常常见,为了能够解决大量数据时分析效率急剧下降的窘况,我们就必须能够去分析非常小量样本的特征,再用这些特征去评估海量总体数据的特征,我们叫它样本检验。 样本,是指我们需要“分析或考察的数据”的…

MAC(m1)-安装Redis6.2.8

Redis官网:Download | Redis 我准备下载7以前的版本 下载放到如下位置 在这个目录打开终端: 编译测试,执行命令:sudo make test 等待了好久,估计好几分钟 最后出现: 下面准备安装redis,编译安…

计算机网络的定义和性能指标

目录计算机网络的定义计算机网络的分类计算机网络的性能指标速率带宽吞吐量时延时延带宽积往返时间利用率丢包率计算机网络的定义 计算机网络的精确定义并未统一;计算机网络的最简单的定义是:一些互相连接的、自治的计算机的集合; 互连&…

Kubernetes组件_Scheduler_02_二次调度

文章目录一、前言二、二次调度/运行期间调度Descheduler2.1 机器上安装helm2.2 每个机器都要准备好镜像2.3 使用helm部署三、Descheduler需要注意的点(相关理论知识)3.1 descheduler 调度策略3.2 descheduler 有哪些不足3.2.1 基于 Request 计算节点负载并不能反映真实情况3.2.…

【Lua】xLua逻辑热更新

1 前言 Lua基础语法 中系统介绍了 Lua 的语法体系,ToLua逻辑热更新 中介绍了 ToLua 的应用,本文将进一步介绍 Unity3D 中基于 xLua 实现逻辑热更新。 逻辑热更新是指:在保持程序正常运行的情况下,在后台修改代码逻辑,修…

子查询+「EXISTS」 以及 组合查询UNION ALL

目录方便的子查询及EXISTS使用子查询作为计算手段使用子查询过滤数据(IN)使用子查询过滤数据(EXISTS)组合查询UNION ALL如何使用UNION ALL合并多个结果集如何使用UNION去除集合的重复记录如何合并2个以上的结果集?方便…

Hudi(6):Hudi集成Spark之spark-shell 方式

目录 0. 相关文章链接 1. 启动 spark-shell 2. 插入数据 3. 查询数据 3.1. 转换成DF 3.2. 查询 3.3. 时间旅行查询 4. 更新数据 5. 增量查询 5.1. 重新加载数据 5.2. 获取指定beginTime 5.3. 创建增量查询的表 5.4. 查询增量表 6. 指定时间点查询 7. 删除数据 …

Python学习基础笔记六十二——反射2

1、 isinstanace(obj, cls) # 检查是否obj是否是类cls的对象: class Foo(object):passobj Foo()print(isinstance(obj, Foo)) 结果返回:True。 issubclass(sub, super) # 检查sub类是否是 super 类的派生类 class Foo(object):passclass Bar(F…

python详解(5)——类,类,还是类

目录 🏆一、前言 🏆二、类 🚩1、面向对象到底是什么 🚩2、数据成员and访问,汉堡店大升级(超难) 👍①、类变量(超难) 👍②、实例变量 &#x1f6a9…

A Latent Transformer for Disentangled Face Editing in Images and Videos翻译

点击下载论文 代码地址 图1 我们将真实图像投影到StyleGAN生成器的潜空间,并在编码的潜码上实现连续的解纠缠属性编辑。从原始图像和投影图像中,我们可以连续编辑一系列属性,例如:“微笑”、“刘海”、“拱形眉毛”、“年龄”、…

分布式对象存储设计原理

保存像图片、音视频这类大文件就是对象存储。不仅有很好的大文件读写性能,还可通过水平扩展实现近乎无限容量,并兼顾服务高可用、数据高可靠。 对象存储“全能”,主要因,对象存储是原生分布式存储系统,相对于MySQL、R…

[Linux]yum安装工具和vim编辑器

🥁作者: 华丞臧. 📕​​​​专栏:【LINUX】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站 文…

每日一问-ChapGPT-20230101-关于新年的规划

文章目录每日一问-ChapGPT系列起因每日一问-ChapGPT-20230101-关于新年的规划优秀的人,新年之初做哪些规划疫情时代,如何更好的保护好自己有哪些运动可以提升抵抗力冥想的具体实现步骤为什么制定了年度规划但往往完成不了如何克服看手机刷视频的习惯当日…