Presto 之Pipeline

一. 前言

我们知道在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来执行。

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

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

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

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

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

相关推荐
GIS数据转换器1 小时前
GIS+大模型助力安全风险精细化管理
大数据·网络·人工智能·安全·无人机
hg01181 小时前
今年前10个月天津进出口总值6940.2亿元
大数据
byte轻骑兵2 小时前
时序数据库选型指南:从大数据视角看IoTDB的核心优势
大数据·时序数据库·iotdb
Leo.yuan3 小时前
制造业都在说BOM,为什么BOM这么重要?
大数据·bom·企业数字化·数字赋能
能鈺CMS3 小时前
内容付费系统全面解析:构建知识变现体系的最强工具(2025 SEO 深度专题)
大数据·人工智能·html
原神启动16 小时前
云计算大数据——Nginx 实战系列(性能优化与防盗链配置)
大数据·nginx·云计算
周全全6 小时前
基于ElasticSearch的语义检索学习-向量化数据、向量化相似度、向量化检索
大数据·学习·elasticsearch
可涵不会debug7 小时前
时序数据库选型指南:大数据时代下Apache IoTDB的崛起之路
大数据·apache·时序数据库
WLJT1231231238 小时前
藏在细节里的生活答案
大数据·生活
TDengine (老段)8 小时前
TDengine 日期函数 DATE 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据