Substrait
概述: Substrait是一套开源标准,用于以平台无关的方式表示关系代数执行计划。与Parquet、Arrow等传统数据存储格式不同,Substrait属于执行计划/协议格式,而非序列化数据格式。其核心目标是实现不同引擎间可互操作的查询执行,让各类系统能够共享查询计划,无需绑定特定的底层后端。
核心特性:
- 跨引擎互操作性:Substrait支持将查询计划序列化后,在不同SQL引擎或执行引擎间传输执行。
- 可扩展的关系代数表示:支持标准关系型算子(扫描、过滤、连接、聚合、排序),并允许自定义引擎专属扩展。
- 与Arrow/Parquet集成:Substrait基于Apache Arrow实现内存中列式数据表示,同时可引用Parquet等格式存储的数据。
- 基于Protobuf的序列化:执行计划通过Protobuf序列化,便于跨语言、跨平台解析和传输。
典型应用场景:
- 引擎间查询计划交换(如将优化后的执行计划从查询规划器提交至分布式执行引擎)。
- 跨系统优化逻辑的标准化落地。
- 异构后端的查询联邦,无需重写SQL即可跨数据源查询。
参考资源: