Spark native向量化组件 datafusion comet

背景

Apache Datafusion Comet 是苹果公司开源的加速Spark运行的向量化项目。

本项目采用了 Spark插件化 + Brotobuf + Arrow + DataFusion 架构形式

其中

  • Spark插件是 利用 SparkPlugin 插件,其中分为 DriverPlugin 和 ExecutorPlugin ,这两个插件在driver和 Executor启动的时候就会调用
  • Brotobuf 是用来序列化 spark对应的表达式以及计划,用来传递给 native 引擎去执行,利用了 体积小,速度快的特性
  • Arrow 是用来 spark 和 native 引擎进行高效的数据交换(native执行的结果或者spark执行的数据结果),主要在JNI中利用Arrow IPC 列式存储以及零拷贝等特点进行进程间数据交换
  • DataFusion 主要是利用Rust native以及Arrow内存格式实现的向量化执行引擎,Spark中主要offload对应的算子到该引擎中去执行

使用

复制代码
export COMET_JAR=spark/target/comet-spark-spark3.5_2.12-0.13.0-SNAPSHOT.jar

$SPARK_HOME/bin/spark-shell \
    --jars $COMET_JAR \
    --conf spark.driver.extraClassPath=$COMET_JAR \
    --conf spark.executor.extraClassPath=$COMET_JAR \
    --conf spark.plugins=org.apache.spark.CometPlugin \
    --conf spark.shuffle.manager=org.apache.spark.sql.comet.execution.shuffle.CometShuffleManager \
    --conf spark.comet.explainFallback.enabled=true \
    --conf spark.memory.offHeap.enabled=true \
    --conf spark.memory.offHeap.size=16g

主要是在classpath下得有对应的 comet对应的动态库

其中 spark.plugins=org.apache.spark.CometPlugin是开启 native 插件,主要是插入一些native计划,也是最核心的部分
spark.shuffle.manager=org.apache.spark.sql.comet.execution.shuffle.CometShuffleManager 是采用列式shuffle(采用Arrow IPC RecordBatch格式)进行数据交互
spark.memory.offHeap.enabled 开启offheap模式,该模式下,执行内存都是用native内存进行分配。

说明

  • native code基准测试

    借助Rust的提供的第三方基准测试工具Criterion, 可以进行native code性能的好坏,提供了更详细的统计分析、图表、与先前基准的差异对比,帮助开发者精确评估代码性能优化效果

  • flamegraph native火焰图的生成

    通过Rust三方提供的火焰图生成工具flamegraph,可以快读的定位出具体的函数耗时,而从帮助开发者快速的定位问题

    对于该Datafusion Comet项目,工具使用见profiling_native_code

    相对于其他开发语言,如java这种,如果说要进行基准测试和火焰图的生成,是需要手动进行下载对应的工具,而rust这种提供的三方包可以直接在代码级别进行了测试,确实是方便了不少

  • 关于该项目讨论

    见Donation of a Spark native engine based on DataFusion & Arrow

相关推荐
Geeys1 小时前
拼多多单品推广完整方案(可直接落地)
大数据·人工智能
生态学者2 小时前
Global Change Biology | 森林越“步调一致”,反而越怕干旱?树木生长与叶片活动的同步之谜
大数据·人工智能·算法·r语言·微信公众平台
lsswear2 小时前
Agent 框架新手入门与实战部署指南
大数据·人工智能·算法
samFuB2 小时前
【数据集】地级市一般性转移支付、专项转移支付数据(2010-2024年)
大数据
YH行业报告分析3 小时前
2026漂白紫胶粉市场深度:EUDR合规与脱蜡路线之争如何重构天然树脂供应链?
大数据·重构
YH_Analytics3 小时前
2026-2032 食品吸液垫行业市场规模与增长预测
大数据·网络·人工智能
richdata3 小时前
鞋服品牌应该如何测算AI商品决策项目的ROI?
大数据·人工智能
tianbin9114 小时前
大模型训练与推理:API中转站在企业AI落地中的隐藏价值
大数据·后端·ai
注塑机数据采集联网4 小时前
注塑机数据采集网关对接MES系统数字化技术方案
大数据·网络·数据库·物联网·数据挖掘·数据分析
野生码农AI实战4 小时前
【无标题】
大数据·人工智能