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

相关推荐
成都蜀味缘餐饮技术培训学校29 分钟前
手撕烤兔技术培训实战指南,秘制腌料配方比例与调制手法
大数据·经验分享·笔记·其他·微信公众平台
roman_日积跬步-终至千里1 小时前
AI 能让一个人成为团队吗?从数据中台到 OPC,重新理解软件工程能力
大数据·人工智能·软件工程
演艺大赏2 小时前
NiFi 数据流实战:FTP→HDFS 与 CSV→Parquet,附坏数据、漏文件与双写
大数据
数字新视界3 小时前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
wafrdggh4 小时前
2026 商城小程序平台哪个价格合理?把跨境附加成本这个坑算透
大数据·小程序
昂永科技|非标件自动报价系统5 小时前
# 昂永(上海)科技非标件自动核价系统落地无锡先导,助力制造核价数字化
大数据·科技·制造
xiaomuzuirenzhen16 小时前
大专电子商务从事电商运营分析师需要考证吗?
大数据·数据库
大大大大晴天17 小时前
ReAct Agent 从原理到实现:让大模型学会思考、行动与观察
大数据·agent
大大大大晴天19 小时前
每天认识一个组件:Apache StreamPark
大数据