Presto 之Pipeline

news2024/11/26 8:33:03
一. 前言

       我们知道在Presto中有个叫Pipeline的概念,Pipeline其实就是一条包含各个算子的流水线,如下所示。本文主要介绍在Presto中,Pipeline是如何划分的。

二. Pipeline

        在Presto中,一个Stage中包括一个或者多个Pipeline,一个Pipeline中包括多个Driver,数据在同一个Pipeline的内部Driver间数据交换不需要经过网络,在pipeline与pipeline之间也只经过内存Exchange在本地进行数据交换即可。

三.  Pipeline切分

        Pipeline的管理都在LocalExecutionPlanner类中实现的,在Stage在生成Driver的时候,是否要切分成多个Pipeline时,主要遵循如下几个原则:

  1. 每个Stage至少有有1条Pipeline去执行,主要代码流程如下所示:

LocalExecutionPlanner::plan
    PhysicalOperation physicalOperation = plan.accept
        context.addDriverFactory     // Stage的主pipeline

         因为每个Stage都会调用LocalExecutionPlanner::plan生成Operator算子,因此可以保证每个Stage至少有一个pipeline来执行。

     2.  对于Exchange算子时增加一条Pipeline对Source进行并行处理。

LocalExecutionPlanner::plan
    PhysicalOperation physicalOperation = plan.accept
​       visitExchange 
​          createLocalExchange
​               context.addDriverFactory      // 对于exchange的source plan,新增一条pipeline处理

   

     3. 在处理Join算子时增加单独一条Pipeline执行Hash表的创建处理。

LocalExecutionPlanner::plan
   PhysicalOperation physicalOperation = plan.accept
​     visitJoin 
​        createLookupJoin
​            createLookupSourceFactory
​                 context.addDriverFactory   // 对于Hash表的构建,新产生一个pipeline处理	   

     4. 此外, 还有其他的一些算子也会切分pipeline,比如semi join等,但是原理和上边是一样的,因此不再重复叙述。

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

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

相关文章

JavaWeb项目基础配置

这里写目录标题 前言1.pom.xml2.webxml3.连接JDBC4.常用代码4.1获取时间4.2实现上传文件需要用到第三方库fileupload 常用快捷键常用操作Tomcat基础操作&#xff1a; 前言 本文主要讲述了 1.pom.xml <?xml version"1.0" encoding"UTF-8"?><pro…

9.2QTday4作业

1 闹钟 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QtDebug> #include <QLabel> //标签类 #include <QLineEdit> //行编辑器类 #include <QPushButton> //按钮类 #include <QTextEdit> //文本编辑器…

STM32定时器定时及其应用

STM32定时器定时及其应用 定时器概述☆定时器相关配置CubeMX工程配置及程序实现固件库程序设计及实现 定时器概述 1. 工作原理 使用精准的时基&#xff0c;通过硬件的方式&#xff0c;实现定时功能。定时器核心就是计数器 2. 定时器分类   基本定时器&#xff08;TIM6~TIM7…

SiameseNet实战中文文本匹配任务

引言 本文我们通过SiameseNet模型来完成中文文本匹配任务&#xff0c;其中包含了文本匹配任务一般套路&#xff0c;后续只需要修改实现的模型。 数据准备 数据准备包括 构建词表(Vocabulary)构建数据集(Dataset) 本次用的是LCQMC通用领域问题匹配数据集&#xff0c;它已经…

RK3568-android11-适配ov13850摄像头

硬件连接 主要分为两部分: mipi接口:传输摄像头数据 i2c接口:配置摄像头和对焦马达芯片寄存器相关驱动 |-- arch/arm64/boot/dts/rockchip DTS配置文件 |-- drivers/phy/rockchip/|-- phy-rockchip-mipi-rx.c mipi dphy 驱动 |-- drivers/media||-- platform/rockchip/isp1…

20230903-闹钟

app.cpp #include "app.h" #include "ui_app.h" int k1 true;APP::APP(QWidget *parent):QWidget(parent),ui(new Ui::APP) {ui->setupUi(this);this->resize(380,300);this->setStyleSheet("background-color:cyan;");//设置样式spe…

关于指针的一些练习(1)

1. int main() {int a[3][2] { (0,1),(2,3),(4,5) };int* p;p a[0];printf("%d", p[0]);return 0; } 解析&#xff1a;a是一个3行2列的二维数组&#xff0c;对他进行初始化时大括号里面是逗号表达式&#xff0c;根据逗号表达式可以得到a数组中元素为1&#xff0c…

知识图谱推理研究综述9.3

综述分类 根据样本量大小的不同&#xff0c;将知识图谱推理方法分为多样本推理、少样本推理和零与单样本推理 KG定义&#xff1a;&#xff08;Y&#xff09; 知识图谱是以图的形式表示真实世界的实体与关系之间关系的知识库。 具体来说知识图谱是通过将应用数学、图形学、信…

培训机构如何利用小程序提升服务质量

近年来&#xff0c;小程序成为了许多企业和机构进行线上业务拓展的新方式。对于培训机构来说&#xff0c;构建一个具有吸引力的小程序可以帮助他们更好地与学员进行互动和沟通&#xff0c;并提供更便捷的学习服务。那么&#xff0c;如何使用第三方制作平台来构建一个具有吸引力…

线性代数的学习和整理18:什么是维度,什么是秩?关于秩的各种定理 (未完成)

目录 1 矩阵的秩 矩阵的秩 2 求秩的方法 矩阵的维度秩 矩阵的维度 向量的模&#xff0c;矩阵的模-没有把&#xff0c;难道是面积&#xff1f; 矩阵的平直概念 5 矩阵的初等变换&#xff08;矩阵等价概念的引出&#xff09; 0 问题引出&#xff1a;什么是秩&#xff1f;…

UG\NX CAM二次开发 查询工序所在的几何组TAG UF_OPER_ask_geom_group

文章作者:代工 来源网站:NX CAM二次开发专栏 简介: UG\NX CAM二次开发 查询工序所在的几何组TAG UF_OPER_ask_geom_group 效果: 代码: void MyClass::do_it() { int count=0;tag_t * objects;UF_UI_ONT_ask_selected_nodes(&count, &objects);for (in…

第二章 USB应用笔记之USB通讯基础

第二章 USB应用笔记之USB主设备和从设备 文章目录 第二章 USB应用笔记之USB主设备和从设备1.连接 > 2.主机枚举USB设备 > 3.有效数据传输&#xff0c;功能控制1.连接检测USB系统主要包括USB主机和USB设备两种设备。USB拓扑结构USB连接检测全速D上拉1.5K电阻&#xff08;高…

Kafka核心原理第二弹——更新中

架构原理 一、高吞吐机制&#xff1a;Batch打包、缓冲区、acks 1. Kafka Producer怎么把消息发送给Broker集群的&#xff1f; 需要指定把消息发送到哪个topic去 首先需要选择一个topic的分区&#xff0c;默认是轮询来负载均衡&#xff0c;但是如果指定了一个分区key&#x…

第五章 树与二叉树 六、树的存储结构

一、双亲表示法&#xff08;顺序存储&#xff09; 结点的指针指向父节点的位置 #define MAX_Tree_Size 100 //双亲表示法 typedef struct {int data;//数据域int parent;//双亲位置域 }PTNode;typedef struct { //树的定义PTNode nodes[MAX_Tree_Size]; //双亲表示int …

【Java实战项目】【超详细过程】—大饼的图片服务器2

代码操作数据库 pom.xml1.juit2.gson3.mysql依赖4.servlet DBUtil类Image类ImageDao类 本文主要讲述了用代码对数据库的操作&#xff0c;maven项目创建后进行如下操作&#xff1a; maven项目创建可以看这里&#xff1a;Servlet-day01 这里面有详细介绍 pom.xml pom.xml中放置了…

Vulnhub: Inferno: 1.1靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.233 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.23380端口目录爆破 gobuster dir -u http://192.168.111.233 -w /usr/share/wordlists/dirbuster/directory-list-2.3-me…

使用Docker配置深度学习的运行环境

文章目录 推荐实验环境前言docker安装docker操作docker配置常见方法&#xff08;安装包、联网、程序管理器&#xff09;安装驱动的前提要求传统方法安装驱动程序程序管理器安装联网安装deb包安装 安装完成后的设置非传统方法安装-通过容器安装驱动的前提要求安装NVIDIA-Contain…

UG\NX CAM二次开发 获取工序类型 UF_OPER_ask_oper_type

文章作者:代工 来源网站:NX CAM二次开发专栏 简介: UG\NX CAM二次开发 获取工序类型 UF_OPER_ask_oper_type 效果: 代码: void MyClass::do_it() { int count=0;tag_t * objects;UF_UI_ONT_ask_selected_nodes(&count, &objects);for (int i=0; i<co…

Kotlin语言基础(一)Kotlin语言特性

Kotlin语言概述&#xff08;一&#xff09;- 语言特性 Kotlin是一种高级强类型语言&#xff0c;可以在Java VM上运行。 它具有如下特性&#xff1a; 1.代码简洁&#xff0c;代码量少&#xff0c;易学易懂。 例如&#xff1a; /*** 定义数据类Student* property id String 学…

14. Loadrunner 详细介绍以及使用

目录 1. Loadrunner 环境搭建 2. Loadrunner 介绍 3. Loadrunner 三大组件之间的关系 4. Loadrunner 脚本录制 4.1 WebTours 项目 4.1.1 如何启动项目 4.1.2 如何访问项目 4.1.3 相关配置 4.2 脚本录制 4.3 脚本加强 4.3.1 插入事务 4.3.2 插入集合点 4.3.3 插入检…