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

相关推荐
智能化咨询8 分钟前
(99页PPT)智慧景区一体化建设方案(附下载方式)
大数据·数据库
G皮T25 分钟前
【Elasticsearch】查询性能调优(一)
大数据·elasticsearch·搜索引擎·全文检索·es·性能·opensearch
说私域41 分钟前
基于AI大模型与AI智能名片S2B2C商城小程序的抖音内容力构建与品牌增长研究
大数据·人工智能·小程序·开源
dixiuapp1 小时前
报修服务软件系统,如何统一管理多元请求
大数据·人工智能
福客AI智能客服1 小时前
AI赋能智能客服机器人:家居日用电商的售后标准化与体验升级核心
大数据·人工智能
戴西软件1 小时前
戴西软件AICrash:基于机器学习的行人保护仿真新范式
大数据·人工智能·机器学习·华为云·云计算·腾讯云·aws
ha_lydms2 小时前
4、Spark 函数_m/n/o/p/q/r
大数据·数据库·python·sql·spark·数据处理·dataworks
Elastic 中国社区官方博客2 小时前
使用 LocalAI 和 Elasticsearch 构建本地 RAG 应用
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
得贤招聘官2 小时前
破局传统招聘:AI面试智能体构建精准高效新生态
大数据·人工智能·面试
潘达斯奈基~2 小时前
spark性能优化5:资源配置与并行度优化
大数据·ajax·性能优化·spark