Presto基础知识
Presto缓存
引入Presto缓存之前 BackgroundHiveSplitLoader 使用底层的文件系统直接进行数据的读写;
引入Presto缓存机制之后,底层的文件系统被被CachingFileSystem 代理一层
CachingFileSystem 有两个子类,根据你选用的底层缓存引擎的不同可能会是下面的两个之一:
AlluxioCachingFileSystem /əˈluːʒ(ə)n/: 在Presto Worker本地利用磁盘进行了数据的缓存
FileMergeCachingFileSystem: 在本地缓存检查这个数据块是否已经读取过了,通过底层的文件系统来从远端来读取数据,读取到数据之后再添加到本地的磁盘缓存
Presto自己实现FileSystem接口,添加cacheable参数,确定是否缓存数据
如何保证缓存的命中率?
即,相同数据请求打到同一节点上,本地读取缓存进行查询提速
节点分发策略:NodeSelectionStrategy:1.指定节点。 2.尽量指定节点 3.随机指定节点
将worker节点进行hash计算,优先选择Prefered Nodes,判断是否繁忙TotalSplitCount,若繁忙则再选择最空闲的节点。
Presto数据类型
Type接口封装,定义了类型定长、变长属性。
定长:
Boolean: 用 Byte 来表示, 0-1 表示 是否
float:内部对应real ,底层用int表示,因为block类针对的都是int
其余:Decimal、时间类型、字符串、IpAddress、Geo等
变长:
varchar(n)
Presto Slice
Slice是Presto里面用来对内存高效地、自由地进行操作的接口。是对sun.misc.Unsafe的包装,更加安全易用。
Slice的结构
Slice里面是通过三个参数来确定一个内存地址: base , address , size
base:是通过JVM分配出来的内存,在JVM层面是int数组、byte数组的对象,而对Slice来说这就是我们要操作的内存块。
address:Unsafe常量,表示byte数组里面第一个元素的地址离整个byte数组地址头的偏移量(为什么会有这么一个偏移量?因为数组由元数据和数据组成,默认从16个字节以后开始存储数据)
size:是我们这块内存的大小,一般来说就是 base 底层所对应的内存的大小(in bytes), 或者更小一点
TupleDomain
TupleDomain 是用来表达 table 里面各个字段的约束条件、取值范围的。内部维护了一个字段名到对应的Domain的映射关系,表示一个表里面多个字段的取值约束条件。
Group by 分组聚合操作的逻辑计划执行流程
stage-0 output
stage-1 exchange aggregation project 读取上游outputbuffer数据,聚合
stage-2 tablescan filter project aggregation 扫描数据,过滤,局部聚合
生成Stage
生成逻辑执行计划过程中,递归原root树生成
生成Task
多个Stage,谁首先生成Task?
由ExecutionPolicy决定,默认:AllAtOnceExecutionPolicy
生成几个Task?
Stage两种类型,数据源读数据和非数据源读数据
数据源读数据,根据具体的数据源类型来确定
如果从connector中拿到的spilt是必须本地访问的,task数取决于数据分布的节点数。
如果从connector中拿到的spilt是远程访问的,取决于limit和presto node个数的较小值。
非数据源读数据
单节点或hash_partition_count决定
Task状态
内部接口每100毫秒调用一次TaskInfoFetcher
Count(distinct) 优化
select A, count(distinct B) from T group by A.
转换成
select A, count(B) from (select A, B from T group by A, B) group by A.
相关文章:
Presto基础知识
Presto缓存 引入Presto缓存之前 BackgroundHiveSplitLoader 使用底层的文件系统直接进行数据的读写; 引入Presto缓存机制之后,底层的文件系统被被CachingFileSystem 代理一层 CachingFileSystem 有两个子类,根据你选用的底层缓存引擎的不同…...
Ajax + Easy Excel 通过Blob实现导出excel
前端代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><script src"./js/jquery-3.6.0.min.js"></script></head><body><div><button onclick"exportF…...
Qt+qss动态属性改变控件状态切换的样式
先说点基础的吧,qt的样式实现,常见的主要有三种方式,分别为: 1.ui界面中右键样式表直接添加 2.代码中对控件设置样式setStyleSheet 3.外部预设好qss文件,代码中加载后设置样式 实际工作开发中,我推荐使用优…...
纷享销客安全体系:安全运维运营
安全运维运营(Security Operations,SecOps)是指在信息安全管理中负责监控、检测、响应和恢复安全事件的一系列运营活动。它旨在保护组织的信息系统和数据免受安全威胁和攻击的损害。 通过有效的安全运维运营,组织可以及时发现和应对安全威胁,减少安全事…...
富瀚微FH8322 ISP图像调试—BLC校正
1、简单介绍 目录 1、简单介绍 2、调试方法 3、输出结果 富瀚微平台调试有一段时间了,一直没有总结,我们调试ISP的时候,首先一步时确定好sensor的黑电平值,黑电平如果不准,则会影响到后面的颜色及对比度相关模块。…...
什么是大型语言模型 ?
引言 在本文[1]中,我们将从高层次概述大型语言模型 (LLM) 的具体含义。 背景 2023年11月,我偶然间听闻了OpenAI的开发者大会,这个大会展示了人工智能领域的革命性进展,让我深深着迷。怀着对这一领域的浓厚兴趣,我加入了…...
RocketMq详解:二、SpringBoot集成RocketMq
在上一章中我们对Rocket的基础知识、特性以及四大核心组件进行了详细的介绍,本章带着大家一起去在项目中具体的进行应用,并设计将其作为一个工具包只提供消息的分发服务和业务模块进行解耦 在进行本章的学习之前,需要确保你的可以正常启动和…...
【源码】二开版微盘交易系统/贵金属交易平台/微交易系统
二开版微盘交易系统/贵金属交易平台/微交易系统 一套二开前端UI得贵金属微交易系统,前端产品后台可任意更换 此系统框架不是以往的至尊的框架,系统完美运行,K线采用nodejs方式运行 K线结算都正常,附带教程 资源来源:https://www.…...
React@16.x(26)useContext
目录 1,上下文的使用2,useContext 1,上下文的使用 之前的文章中介绍过 context上下文。 使用举例: import React, { useState } from "react";const ctx React.createContext();function Child() {return <ctx.C…...
Vue2学习(04)
目录 一、组件的三大组成部分 二、组件的样式冲突scoped 三、scoped原理 编辑 四、data是一个函数 五、组件通信 1.概念:是指组件与组件之间的数据传递,组件的数据是独立的,无法直接访问其他组件的数据,想用其他组件的数…...
Python中columns()函数
1. columns的概念 在数据分析和处理中,columns是指数据表中的列,也称为字段。每一列代表了特定类型的数据,在一个数据表中,每一行代表了一个数据实例,而每一列则代表了一个特定的特征或属性。 可以直接定义和更改列标题,也可以直接读取某列的数据,或者对某列进行运算。…...
Vue3 使用 vue-clipboard3 实现一键复制
安装依赖 npm install --save vue-clipboard3示例 <template><el-input v-model"data"></el-input><button click"touchCopy">复制链接</button> </template><script setup lang"ts"> // 导入插件 …...
人机环境生态系统智能的流动性
一般来说,流动性可以理解为事物在空间或时间上的转移、变化或运动。在人机环境生态系统中,流动性可以涉及以下几个方面: 信息流动:数据、消息、知识等在系统中的传递和交换。这可能包括传感器收集的数据传输到处理中心,…...
实现开源可商用的 ChatPDF RAG:密集向量检索(R)+上下文学习(AG)
实现 ChatPDF & RAG:密集向量检索(R)上下文学习(AG) RAG 是啥?实现 ChatPDF怎么优化 RAG? RAG 是啥? RAG 是检索增强生成的缩写,是一种结合了信息检索技术与语言生成…...
对待谷歌百度等搜索引擎的正确方式
对待百度、谷歌等搜索引擎的方式是,你要站在搜索引擎之上,保持自己的独立思想和意见。 当谷歌宣布他们将会根据一个名为“Alphabet”的新控股公司来进行业务调整时,在科技界引起了一片恐慌之声。 永远不要说这是一个公司一直在做的事情。不…...
pikachu靶场通关全流程
目录 暴力破解: 1.基于表单的暴力破解: 2.验证码绕过(on server): 3.验证码绕过(on client): token防爆破: XSS: 1.反射型xss(get): 2.反射性xss(post): 3.存储型xss&#…...
实现k8s网络互通
前言 不管是docker还是k8s都会在物理机组件虚拟局域网,只不过是它们实现的目标不同。 docker:针对同一个物理机(宿主机) k8s:针对的是多台物理机(宿主机) Docker 虚拟局域网 K8S虚拟局域网 …...
diffusers 使用脚本导入自定义数据集
在训练扩散模型时,如果附加额外的条件图片数据,则需要我们准备相应的数据集。此时我们可以使用官网提供的脚本模板来控制导入我们需要的数据。 您可以参考官方的教程来实现具体的功能需求,为了更加简洁,我将简单描述一下整个流程…...
【Android面试八股文】请讲一讲synchronized和ReentrantLock的区别
文章目录 请讲一讲synchronized和ReentrantLock的区别这道题想考察什么 ?考察的知识点应该如何回答?Synchronized 的原理ReentrantLock 的原理Synchronized 和 ReentrantLock 的区别总结请讲一讲synchronized和ReentrantLock的区别 这道题想考察什么 ? 是否了解并发相关的理…...
springmvc 全局异常处理器配置的三种方式深入底层源码分析原理
文章目录 springmvc 全局异常处理器配置的三种方式&深入底层源码分析原理配置全局异常处理器的三种方式实现接口HandlerExceptionResolver并配置到WebMvcConfigurer注解式配置ExceptionHandlercontroller里方法上定义ExceptionHandler 深入源码分析进入DispatcherServlet执…...
实战分享:如何用OmniPeek和TL-WDN7200H网卡高效抓取WiFi空口数据包(附信道选择技巧)
实战分享:如何用OmniPeek和TL-WDN7200H网卡高效抓取WiFi空口数据包(附信道选择技巧) 在无线网络分析和安全研究领域,空口数据包捕获是诊断问题、优化性能和发现安全隐患的基础技能。不同于有线网络抓包,无线环境中的信…...
门户网站被入侵了怎么办?从紧急止损到重建免疫的完整作战手册
当监控警报响起,发现服务器存在异常进程、网站首页或核心栏目内容被恶意篡改、或数据库出现不明查询时,一个可怕的现实摆在眼前:您的门户网站已经被入侵了。门户网站作为企业或机构的官方形象窗口,一旦被入侵,不仅直接…...
LangGraph Platform本地部署实战:用Docker和CLI快速搭建你的第一个AI Agent微服务
LangGraph Platform本地部署实战:从开发到生产的AI Agent微服务架构 在AI应用开发领域,快速将原型转化为可部署的服务是每个开发者面临的挑战。LangGraph Platform作为LangChain生态中的工作流编排工具,其本地部署能力为开发者提供了从开发环…...
PyTorch 2.8通用镜像实战教程:在/data挂载数据集+models加载权重全流程
PyTorch 2.8通用镜像实战教程:在/data挂载数据集models加载权重全流程 1. 镜像环境概述 PyTorch 2.8深度学习镜像基于RTX 4090D 24GB显卡和CUDA 12.4深度优化,为各类AI任务提供开箱即用的开发环境。这个镜像特别适合需要高性能计算资源的深度学习项目&…...
OpenClaw+GLM-4-7-Flash科研助手:自动整理文献与生成综述
OpenClawGLM-4-7-Flash科研助手:自动整理文献与生成综述 1. 为什么需要自动化科研助手 作为一名经常需要阅读大量文献的研究者,我发现自己花费在文献整理上的时间越来越多。每次打开文件夹看到几十篇PDF文献时,那种"从哪里开始"的…...
从‘文化进化’到AI调参:Memetic算法在机器学习超参数优化中的实战指南
Memetic算法:机器学习超参数优化的进化革命 当你的神经网络在验证集上表现停滞不前,当XGBoost的网格搜索消耗了三天三夜却收效甚微,或许该换个视角看待调参这个"玄学"问题了。Memetic算法——这个融合了达尔文进化论与文化传播智慧…...
SpringBoot集成MinIO实战:从零构建企业级文件存储服务
1. 为什么选择MinIO作为企业级文件存储方案 MinIO这几年在企业级存储领域越来越火,我最早接触它是在2018年做电商项目时遇到的图片存储需求。当时对比了FastDFS、HDFS等方案后,最终选择了MinIO,现在回头看这个决定非常正确。MinIO最吸引人的地…...
Android定位模拟技术全解析:基于系统级Hook的位置伪造实现方案
Android定位模拟技术全解析:基于系统级Hook的位置伪造实现方案 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation 在移动应用开发与测试过程中,精准控制定位信…...
基于LiveQing流媒体平台实现大疆无人机等RTMP推流接入轻松实现Web网页直播+录像回放
大疆无人机RTMP推流接入LiveQing,轻松实现Web网页直播录像留存 在无人机直播场景中,大疆无人机凭借出色的空中视角和稳定的图传表现,成为应急救援、工程巡检、赛事直播、国土测绘等领域的首选设备。但很多用户在使用大疆无人机直播时…...
GPT-4o 新手入门指南:从零开始构建你的第一个智能对话应用
GPT-4o 新手入门指南:从零开始构建你的第一个智能对话应用 作为一名刚接触大模型开发的程序员,面对 GPT-4o 这样的新工具,你是不是既兴奋又有点无从下手?看着官方文档里一堆 API 参数,想着怎么管理好几轮对话的上下文…...
