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

相关推荐
武汉唯众智创1 分钟前
应用型大数据实训室实验教学方案:一份基于开源技术的完整实训指南
大数据·开源·大数据实训室·开源技术·大数据实验室
武子康1 分钟前
大数据-203 scikit-learn 决策树剪枝参数:max_depth/min_samples_leaf 到 min_impurity_decrease
大数据·后端·机器学习
ywyy679811 分钟前
品牌GEO优化系统开发:区域流量、用户点击、到店转化的数据分析技巧
大数据·geo系统开发·geo系统·geo优化系统开发·geo优化系统·品牌geo
IT观测25 分钟前
选择可信数据空间安全服务商:源堡科技以风险管控能力破局
大数据·科技·安全
CNRio1 小时前
Day 51:Git的高级技巧:使用Git的reflog恢复丢失的提交
大数据·git·elasticsearch
第七在线1 小时前
Style Union携手第七在线 全面推进商品管理智能化升级
大数据
kuankeTech1 小时前
海南封关供应链重构:外贸ERP如何成为企业的“数字海关”
大数据·数据库·人工智能·重构·软件开发·erp
WZGL12301 小时前
乡村振兴背景下丨农村养老服务的价值重构与路径创新
大数据·人工智能·科技·安全·智能家居
Linux猿1 小时前
2025年亚马逊全球线上商采趋势与区域洞察报告 | 附PDF
大数据·人工智能·研报精选