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等,但是原理和上边是一样的,因此不再重复叙述。

相关推荐
天远云服11 小时前
Go 语言高并发实战:批量清洗天远借贷行为验证API (JRZQ8203) 的时间序列数据
大数据·api
Hello.Reader11 小时前
Flink 系统内置函数(Built-in Functions)分类、典型用法与选型建议
大数据·flink·excel
AI营销实验室12 小时前
AI 工具何高质量的为销售线索打分?
大数据·人工智能
打码人的日常分享12 小时前
企业数据资产管控和数据治理解决方案
大数据·运维·网络·人工智能·云计算
数字冰雹13 小时前
从“东数西算”到智慧机房:数字孪生如何重塑数据中心的“智能大脑”?
大数据·人工智能·数据可视化
qq_3482318513 小时前
市场快评 · 今日复盘要点20251224
大数据
TG:@yunlaoda360 云老大14 小时前
如何在华为云国际站代理商控制台进行SFS Turbo的基础状态核查?
大数据·服务器·华为云·php
Yyyyy123jsjs14 小时前
XAUUSD API 周末无推送,会影响回测与实盘一致性吗?
大数据·区块链
是Judy咋!14 小时前
Elasticsearch---单机部署
大数据·elasticsearch·搜索引擎
天辛大师14 小时前
2026年丙午年火马年周易运势与AI预测大模型启示录
大数据·人工智能·游戏·随机森林·启发式算法