Apache Toree 0.5.0-incubating 介绍与选型指南

本文介绍 Jupyter 平台的 Apache Spark 内核 Apache Toree 0.5.0-incubating:孵化状态、消息协议与 Magics 架构、官方安装示例、适用限制,并与 sparkmagic、Almond 做许可、stars、发版节奏与兼容矩阵选型对比。

Apache ToreeApache Toree2026/10/18

Apache Toree 0.5.0-incubating 介绍与选型指南

一、信息基准

本次溯源的查询日期为 2026-10-18,全部信息取自 Apache 官方渠道与 Maven Central 元数据,未做任何本地安装或运行验证。

版本基准:Apache Toree 0.5.0-incubating(官网下载页与 Maven Central 当前最新发行版)。

项目内容
软件名称Apache Toree
当前版本0.5.0-incubating
版本性质ASF 孵化器(Incubator)项目发行版,版本号带 -incubating 后缀
发布渠道官网下载页(tar.gz 发行物)、PyPI(apache-toree)、Maven Central(org.apache.toree)
开源许可Apache License 2.0
项目状态孵化中(官网与文档页脚均声明 "Apache Toree is an effort undergoing Incubation")
最新版核验Maven Central 元数据 latest/release 均为 0.5.0-incubating,元数据更新时间 2022-04-21

官方来源清单:

来源用途地址
Apache Toree 官网项目定位、孵化状态声明https://toree.apache.org/
官方下载页发行物清单与 PyPI 安装方式https://toree.apache.org/download/
官方快速上手文档安装命令与 Hello World 示例https://toree.apache.org/docs/current/user/quick-start/
Maven Central 元数据版本序列与最新版交叉核验https://repo1.maven.org/maven2/org/apache/toree/toree-assembly/maven-metadata.xml
GitHub 仓库源码与社区活跃度观察https://github.com/apache/incubator-toree
ASF 孵化器项目页孵化状态旁证https://incubator.apache.org/projects/

版本轨迹(Maven Central org.apache.toree:toree-assembly 元数据):0.2.0-incubating → 0.3.0-incubating → 0.4.0-incubating → 0.5.0-incubating(元数据更新于 2022-04-21,此后截至 2026-10-18 无新增版本)。

二、软件概述

本次介绍的是 Apache Toree 0.5.0-incubating。Apache Toree 是运行于 Jupyter Notebook 平台的 Apache Spark 内核(Kernel),官方对其核心目标的表述为:"provide the foundation for interactive applications to connect and use Apache Spark"(为交互式应用连接和使用 Apache Spark 提供基础)。

它基于 IPython 消息协议与 0MQ 实现,虽然协议名称带有 IPython 字样,但 Toree 目前可以通过该协议对外暴露 Scala、Python 与 R 三种语言的 Spark 编程模型。对使用 Jupyter Notebook 的数据工程师而言,Toree 使 Spark 集群能够以内核形式接入 Jupyter 生态,实现交互式的数据探索;对应用开发者而言,Toree 也允许应用程序把代码片段或打包好的 JAR 发送给远端 Spark 执行并取回结果。

需要特别说明的是:Toree 至今仍是 ASF 孵化器项目,尚未毕业为顶级项目(TLP),且当前最新版本 0.5.0-incubating 的 Maven Central 元数据停留在 2022-04-21,截至 2026-10-18 已长期没有新版本发布。评估选型时应将这两点作为重要约束。

三、核心架构

3.1 内核角色与消息协议

Toree 的本体是一个符合 Jupyter 消息协议(IPython messaging protocol)的内核进程,通过 0MQ 通道与前端或客户端程序通信。前端(如 Jupyter Notebook)把代码单元发送给内核,内核将其提交给内嵌的 Spark 执行环境,再把执行结果按协议回传。这使 Toree 可以直接嵌入 Jupyter 生态中,无需额外网关层。

3.2 多语言支持

尽管协议源自 IPython,Toree 在同一内核内对 Scala、Python、R 三种语言暴露 Spark 编程模型,用户在 Notebook 中切换语言后仍可访问同一个 Spark 应用上下文。

3.3 Magics 扩展机制

Toree 提供一套名为 Magics 的扩展机制:客户端除了发送原始代码,还可以发送带有特定前缀的 Magics 命令,例如向 Spark 执行环境添加 JAR 包、执行 Shell 命令等。官方将 Magics 定义为该系统的重要扩展点,开发者可以按官方文档(Creating Extensions)自定义新的 Magics 功能。

3.4 多客户端共享内核

官方概述中给出了一种典型的多租户形态:位于远端的应用可以借助 Toree Client 或 Jupyter Client 与运行在 Spark 集群上的 Toree Server 通信,也可以直连;多个客户端/应用可以共享同一个持有 Spark 应用上下文的内核,形成一种简单的多租户模式。

3.5 生态可视化扩展

官网提及通过 Brunel for Apache Toree 等扩展,可以在 Notebook 中基于 Spark DataFrame API 直接进行富可视化输出。

四、功能特性

基于官方主页与官方用户文档,Toree 0.5.0-incubating 的主要特性如下:

特性官方描述与出处
Spark 上下文自动绑定内核启动后自动创建 SparkContext 绑定,用户通过变量 sc 直接访问(官方 Quick Start 文档)
多语言 Spark 模型Scala、Python、R 语言暴露 Spark 编程模型(官网概述)
Jupyter 生态兼容实现 Jupyter 消息协议,可即插即用地接入 Jupyter 生态(官网 Quick Start)
Magics 扩展点以 Magics 方式添加 JAR、执行 Shell 命令等,且支持开发者自定义扩展(官网概述与开发者文档)
远程交互能力应用可远程发送代码片段与 JAR 包,结果直接返回应用(官网概述)
独立使用模式官方文档提供 Using Standalone 章节,支持脱离 Notebook 前端独立使用
代码/JAR 包投递支持向 Spark 执行环境发送打包 JAR 与代码片段(官网概述)

五、快速上手

以下命令引自 Apache Toree 官方快速上手文档(https://toree.apache.org/docs/current/user/quick-start/),官方要求执行机器上已具备一份 Apache Spark 发行版。

  1. 以内核形式安装到 Jupyter:
pip install --upgrade apache-toree
jupyter toree install --spark_home=/usr/local/bin/apache-spark/
  1. 安装并启动 Notebook(官方示例命令):
pip install notebook
jupyter notebook
  1. 在 Notebook 中选择 Toree (Apache Spark) 内核后,新建 Scala 单元执行 println("Hello, World!");官方文档说明:Toree 的关键组件之一是自动创建 SparkContext 绑定,用户可直接通过变量 sc 访问并取回返回值。

以上为官方文档给出的最小示例路径,本文不做本地实测。官方文档另提供 Installation、How it works、Using with Jupyter Notebooks、Using Standalone、Magics Overview、FAQ、Advanced Topics 等章节(均见 toree.apache.org/docs/current/)。

六、适用场景与限制

6.1 适用场景

  • 交互式 Spark 数据探索:数据团队已在 Jupyter Notebook 上工作,希望以内核方式直连 Spark,无需额外维护网关组件。
  • 应用内嵌 Spark 交互:业务应用需要向远端 Spark 集群发送代码片段或 JAR 包并取回结果,Toree 提供基于消息协议的交互通道。
  • 多客户端共享一个 Spark 上下文:多个客户端连接同一内核,形成轻量多租户。
  • Scala/Python/R 混合的数据教学与演示环境。

6.2 限制与风险

  • 孵化器项目:尚未毕业为 ASF 顶级项目,官网持续展示孵化声明,意味着 ASF 尚未对项目完成最终背书。
  • 版本停滞:最新版 0.5.0-incubating 的 Maven Central 元数据更新于 2022-04-21,截至 2026-10-18 已三年多无新版本,安全补丁与新特性跟进不可预期。
  • 依赖本地 Spark:官方快速上手要求运行 Toree 的机器上已部署 Apache Spark 发行版。
  • 上游兼容性风险:Spark、Jupyter 与 Python 生态迭代较快,长期未发版的项目对新型号组件的兼容性需要使用者自行验证。
  • 相对成熟的托管方案(如 Notebook 平台内置内核或基于 Livy 的远端会话方案)缺少官方运维工具链与最佳实践沉淀。

综上:对全新的生产关键链路,不建议将 Toree 作为首选;若用于学习、原型验证或既有 Toree 集成的延续维护,可按上述限制审慎评估。

七、同类选型对比

同类软件选取三个维度相近的方案:sparkmagic(基于 Apache Livy 的 Jupyter Spark 客户端)与 Almond(纯 Scala 的 Jupyter 内核)。下表数据联网实查,查询日期 2026-10-18;stars 采集自 GitHub 仓库页面,发版信息来自 GitHub Releases 与 Maven Central。

维度Apache Toree 0.5.0-incubatingsparkmagic 0.23.0Almond 0.15.0
开源许可Apache-2.0(ASF)BSD(Modified BSD License,仓库 LICENSE.md)BSD-3-Clause(仓库 LICENSE)
GitHub stars(2026-10-18)750(github.com/apache/incubator-toree)1368(github.com/jupyter-incubator/sparkmagic)1630(github.com/almond-sh/almond)
最近发版0.5.0-incubating(Maven Central 元数据 2022-04-21)0.23.0(GitHub Releases,2025-07-07)0.15.0(GitHub Releases,2026-09-28)
版本节奏孵化中,2022-04 后无新版,节奏停滞低频维护,近两年偶有版本持续发版,另提供 Nightly 构建
连接 Spark 的方式内核进程内嵌 Spark 上下文,直连本地/集群 Spark通过 Apache Livy REST 接口操作远端 Spark 会话Scala 内核,面向 Scala 计算生态,Spark 集成作为库使用
兼容矩阵Jupyter 消息协议内核;Scala/Python/RJupyter 前端 + Livy 服务端;PySpark/SparkR/Scala 通道Jupyter 生态;Scala 版本跟随上游 Scala 发布

数据来源:GitHub 各仓库页面与 releases.atom、Maven Central 元数据、sparkmagic 仓库 LICENSE.md、Almond 仓库 LICENSE(2026-10-18 查询)。

选型建议:若希望在 Jupyter 中以原生内核方式直接驱动 Spark 并接受孵化项目与长期未发版的现状,可选 Apache Toree;若目标是远端共享 Spark 集群、希望架构上与本地环境解耦,优先 sparkmagic(需自行运维 Livy);若以 Scala 为主要语言做交互式数据科学,Almond 的活跃度与发版节奏更可靠。

八、参考链接

  1. Apache Toree 官网:https://toree.apache.org/
  2. 官方下载页(含发行物与 PyPI 安装):https://toree.apache.org/download/
  3. 官方快速上手文档:https://toree.apache.org/docs/current/user/quick-start/
  4. 官方文档索引(用户/开发者):https://toree.apache.org/docs/current/user/faq/
  5. Maven Central 版本元数据:https://repo1.maven.org/maven2/org/apache/toree/toree-assembly/maven-metadata.xml
  6. GitHub 仓库:https://github.com/apache/incubator-toree
  7. ASF 孵化器项目列表:https://incubator.apache.org/projects/
  8. sparkmagic 仓库:https://github.com/jupyter-incubator/sparkmagic
  9. Almond 官网与仓库:https://almond.sh/ 、https://github.com/almond-sh/almond