Apache SystemDS 3.4.0 介绍与选型指南
Apache SystemDS 3.4.0 介绍与选型指南:信息基准、机器学习系统概述、DML 与混合运行时架构、3.4.0 新特性、快速上手、适用场景与限制、与 Spark MLlib、Ray 的量化对比及官方参考链接。
Apache SystemDS 3.4.0 介绍与选型指南
一、信息基准
| 项目 | 内容 |
|---|---|
| 查询日期 | 2026-10-18 |
| 本次介绍版本 | Apache SystemDS 3.4.0(官网标注 3.4.0 为当前 stable;发行包目录时间戳 2026-07-24) |
| 项目状态 | Apache 软件基金会顶级项目(TLP),许可证 Apache-2.0;由 Apache SystemML 更名而来 |
| 版本依据 | 官网下载/文档导航(3.4.0 stable)、downloads.apache.org/systemds 目录(1.2.0 至 3.4.0 归档)、3.4.0 官方发行说明(Java 17 要求等)三方一致 |
官方来源清单(查询日期均为 2026-10-18):
| 来源 | 地址 | 用途 |
|---|---|---|
| 官方网站 | https://systemds.apache.org/ | 项目门户与导航 |
| 官方下载页 | https://systemds.apache.org/download | 3.4.0 发行包 |
| ASF 发行目录 | https://downloads.apache.org/systemds/ | 发行归档与 KEYS |
| 3.4.0 发行说明 | https://systemds.apache.org/release-notes/systemds-release-notes-3.4.0 | 运行要求与新特性 |
| 官方文档 | https://systemds.apache.org/docs/3.4.0/ 与 https://apache.github.io/systemds/ | 语言参考、安装与 API |
| GitHub 仓库 | https://github.com/apache/systemds | 源码与 README(定位描述) |
| 快速上手 | https://apache.github.io/systemds/site/install.html | 安装、快速上手与 Hello World |
二、软件概述
本文介绍的版本为 Apache SystemDS 3.4.0。Apache SystemDS 是 Apache 软件基金会的开源机器学习系统(官方 README 定位:面向端到端数据科学生命周期的 ML 系统),覆盖从数据准备与清洗、高效模型训练到调试与服务的完整链路。其前身是 Apache SystemML(IBM 研究院贡献,后成为 Apache 顶级项目),更名为 SystemDS 后扩展为更通用的 ML 系统形态。
它的核心特征是"声明式算法 + 自动混合执行":算法以类 R 语法的高级语言 DML(或 Python/Java API)描述,系统自动生成局部内存操作与分布式操作(基于 Apache Spark)的混合运行时计划,开发者无需手工改写算法即可在不同规模数据上执行;另有 GPU 与联邦学习后端。3.4.0 按官方发行说明完成 Java 17 基线切换并引入原生 Delta Lake I/O 与向量化执行等改进。
开源许可为 Apache-2.0。GitHub 仓库 stars 为 1,101(2026-10-18 GitHub 仓库页面实查,该数值随时间变动)。
三、核心架构与核心概念
3.1 语言层
- DML(类 R 语法脚本):以矩阵为中心的声明式语言,内置大量矩阵/张量运算原语与统计函数;算法即脚本。
- Python API 与 Java API:官方同时提供 Python(可经 PyPI 安装)与 Java API,便于在数据科学生态与 JVM 工程中嵌入。
- 内置算法库:分类、回归、聚类、矩阵分解、生存分析等现成算法脚本,随发行包分发。
3.2 运行时层
- 混合运行时计划(Hybrid Runtime Plan):系统对脚本做优化编译,自动决定每个操作在本地内存执行还是分布化到 Spark 集群执行(官方 README 表述)。
- Spark 集成:分布式后端基于 Apache Spark,经 spark-submit 方式部署(官方发行说明提及 spark-submit 部署的参数要求)。
- GPU 与联邦学习后端:官方 README 点名存在额外 GPU 与联邦学习后端。
- 3.4.0 运行要求(官方发行说明):Java 17 必需;启动 JVM 需启用 Vector API(
--add-modules=jdk.incubator.vector);自定义 Java 启动器与 spark-submit 部署须向每个 JVM 传递所需模块与包开放参数。
3.3 数据 I/O
矩阵与帧(Frame)数据结构;3.4.0 新增基于 Delta Kernel 的原生 Delta Lake 读写(含 Parquet 数据文件支持),配合既有 CSV/二进制等格式,衔接湖仓数据面。
四、功能特性
4.1 端到端数据科学生命周期
数据准备与清洗(以矩阵/帧表达的特征工程)、模型训练、调试与服务在同一定义体系内完成,减少多工具粘合。
4.2 自动混合执行
同一份算法脚本从单机内存自动扩展到 Spark 集群,规模变化不需要重写算法;编译期优化(操作融合、重计算策略等)由系统承担。
4.3 3.4.0 新特性(官方发行说明)
- 原生 Delta Lake 读写器(基于 Delta Kernel + Parquet);
- 向量化执行与优化的爱因斯坦求和(einsum)运算路径;
- Scuro 多模态与时间序列处理能力扩展;
- 新内置算法:LARS、缺失数据机制检测、隐马尔可夫模型(HMM)、HDBSCAN 等。
4.4 扩展与工程化
自定义函数与外部 Java UDF、 Federated 与 GPU 后端、与 Spark 生态(spark-submit)及湖仓格式(Delta Lake)衔接,适合嵌入 JVM 数据平台。
五、快速上手
以下路径引自官方 Quick Start(https://apache.github.io/systemds/site/install.html ,查询日期 2026-10-18),本文未做本地实测:
- 准备 Java 17 运行时(3.4.0 官方要求),并按需配置
--add-modules=jdk.incubator.vector(官方发行说明的 Runtime Requirements 节)。 - 从官方下载页获取 SystemDS 3.4.0 发行包并解压(或按官方 Install from source 文档从源码构建)。
- 编写一个最简 DML 脚本(类 R 语法的矩阵运算,如创建随机矩阵并求和/矩阵乘),保存为
hello.dml。 - 用发行包自带的
bin/systemds启动脚本执行:./bin/systemds hello.dml,观察本地内存运行时输出。 - 数据规模扩大时按官方文档以 spark-submit 方式提交同一脚本,由系统自动生成混合运行时计划;Python 侧可经 PyPI 安装 systemds 包使用 Python API。
官方站点同时提供 sample notebook 与 Hello World 页面作为第一个示例的参照。
六、适用场景与限制
适用场景:
- 算法研究与教学:声明式 DML 快速表达矩阵统计算法,自动获得分布式执行;
- JVM 数据平台内嵌 ML 能力:Java/Scala 体系内以库形态提供模型训练与打分;
- 中等规模数据的批量统计建模(特征工程 + 经典 ML),衔接 Spark 与 Delta Lake 湖仓;
- 对多模态/时间序列(Scuro)与联邦学习方向有实验需求的团队。
限制(如实标注):
- 深度学习生态弱于 PyTorch/TensorFlow 系工具链,定位是矩阵统计型 ML 系统而非通用 DL 框架;
- Java 17 + Vector API 孵化模块的运行要求对老旧集群不友好(官方发行说明明示);
- 社区体量小(stars 1,101,2026-10-18 实查),第三方教程与问题检索资源有限;
- Python 体验以 API 嵌入为主,交互式科学计算生态(Notebook 插件、可视化)不如主流 Python ML 栈完整。
七、同类选型对比
7.1 对比对象与数据来源
对比 Spark MLlib 与 Ray(同为分布式 ML/计算系统)。stars 均取自各项目 GitHub 仓库页面 2026-10-18 页面实查;最近发版取自 GitHub Releases 订阅流与 Maven Central,查询日期均为 2026-10-18。
7.2 量化对比
| 维度 | Apache SystemDS 3.4.0 | Spark MLlib(Apache Spark 4.2.0) | Ray 2.59.0 |
|---|---|---|---|
| 开源许可 | Apache-2.0 | Apache-2.0 | Apache-2.0 |
| GitHub stars + 最近发版 | 1,101;3.4.0(2026-07-24,dist 目录时间戳) | 44,237;4.2.0(Maven Central 实查;4.3.0 处于 RC,2026-10-12) | 44,059;Ray-2.59.0(2026-10-02) |
| 版本节奏 | 年度级大版本,3.x 线稳定推进 | 季度级特性版本 + 多维护线并行 | 月度级高频滚动 |
| 兼容矩阵 | Java 17 必需 + Vector API 模块参数,Spark 集群后端 | Spark 生态(Scala/Java/Python/SQL),多版本 JDK/集群管理器支持 | Python 优先,多后端(本地/集群/K8s 生态) |
| 定位差异 | 声明式 DML + 自动混合执行计划的 ML 系统 | Spark 内建分布式 ML 库,随大数据平台走 | 通用分布式计算框架(RL/训练服务/调参等生态) |
7.3 选型建议
一句话建议:已有 Spark 平台、要标准分布式 ML 就用 Spark MLlib(生态与社区最大),要做通用分布式计算与 RL/服务化选 Ray;只有当目标是"以声明式语言表达算法、自动混合本地与分布式执行"的 JVM 侧数据科学平台时,SystemDS 3.4.0 才是对口之选。
八、参考链接
| 链接 | 说明 |
|---|---|
| https://systemds.apache.org/ | 项目官网 |
| https://systemds.apache.org/download | 官方下载页(3.4.0 stable) |
| https://downloads.apache.org/systemds/ | ASF 发行目录与 KEYS |
| https://systemds.apache.org/release-notes/systemds-release-notes-3.4.0 | 3.4.0 官方发行说明 |
| https://apache.github.io/systemds/site/install.html | 安装与快速上手 |
| https://systemds.apache.org/docs/3.4.0/ | 3.4.0 官方文档 |
| https://github.com/apache/systemds | GitHub 仓库(stars 实查 1,101,2026-10-18) |
| https://repo1.maven.org/maven2/org/apache/spark/spark-core_2.13/ | Spark 版本元数据(4.2.0 实查) |
| https://github.com/apache/spark | Spark 仓库(对比数据实查) |
| https://github.com/ray-project/ray | Ray 仓库(对比数据实查) |