sparkling-water

GitHub
977 362 较难 1 次阅读 6天前Apache-2.0插件开发框架数据工具
AI 解读 由 AI 自动生成,仅供参考

Sparkling Water 是一款将高性能机器学习引擎 H2O-3 与大数据处理框架 Apache Spark 无缝集成的开源工具。它主要解决了在大规模分布式数据场景下,用户难以直接利用 Spark 生态中的数据(如 RDD、DataFrame)调用 H2O 先进算法的痛点。通过 Sparkling Water,开发者无需繁琐的数据导出导入操作,即可在 Spark 集群内部直接运行 H2O 的模型训练与预测任务,实现了数据处理与机器学习流程的高效闭环。

这款工具特别适合数据工程师、算法研究人员以及需要构建企业级机器学习应用的开发团队使用。其独特的技术亮点在于提供了双向数据转换工具,能够轻松发布 Spark 数据结构为 H2O 帧,反之亦然;同时支持专用的领域特定语言(DSL),让 Spark 数据结构可直接作为 H2O 算法的输入。此外,Sparkling Water 还完善了 Python 接口(PySparkling),使得习惯使用 PySpark 的用户也能直接调用其功能。无论是通过交互式 Shell 探索数据,还是提交生产级应用,Sparkling Water 都能帮助用户充分利用 Spark 的扩展性与 H2O 的算法优势,快速构建可扩展的机器学习解决方案。

使用场景

某大型电商公司的数据科学团队需要在 PB 级用户行为日志上训练高精度欺诈检测模型,以实时拦截异常交易。

没有 sparkling-water 时

  • 数据搬运耗时巨大:团队必须将 Spark 清洗后的海量数据导出为 CSV 或 Parquet 文件,再重新加载到独立的 H2O 集群中,I/O 开销导致预处理环节耗时数小时。
  • 架构维护复杂:需要同时维护 Spark 计算集群和 H2O 机器学习集群两套独立的基础设施,网络配置和资源调度冲突频发。
  • 开发流程割裂:数据工程师使用 Scala/Python 编写 Spark 任务,而算法工程师需在另一套环境中调用 H2O API,双方无法在同一代码库中无缝协作。
  • 迭代效率低下:每次调整特征工程逻辑后,都必须重复繁琐的数据导出导入过程,严重拖慢了模型验证和参数调优的节奏。

使用 sparkling-water 后

  • 内存零拷贝共享:sparkling-water 允许直接将 Spark DataFrame 转换为 H2O Frame,数据在集群内存中直接共享,消除了磁盘读写,数据准备时间从小时级缩短至分钟级。
  • 统一运行环境:只需在现有的 Spark 集群上部署 sparkling-water,即可原地启动 H2O 服务,无需额外搭建和维护独立的机器学习集群。
  • 代码流式整合:开发人员可以在同一个 PySpark 脚本中连续完成数据清洗、特征转换及调用 H2O 的 GBM 或深度学习算法,实现了端到端的流水线开发。
  • 敏捷模型迭代:特征工程的修改可立即反馈给模型训练环节,支持快速进行多轮超参数搜索,显著提升了模型上线速度。

sparkling-water 通过打通 Spark 大数据处理能力与 H2O 高性能算法引擎,让企业在不移动数据的前提下,实现了大规模机器学习流程的极致高效与简化。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明

内存

未说明 (可通过 spark.executor.memory 参数配置,示例为 4g)

依赖
notes该工具是连接 Apache Spark 和 H2O-3 的集成库。支持多种运行模式:Sparkling Shell、Spark Submit、PySpark 等。提供内部和外部两种后端部署模式。在 Windows 环境下有专门的教程。需根据所使用的 Spark 版本下载对应的 Sparkling Water 二进制包或通过 Maven 引入依赖。
python未说明 (支持 PySpark/PySparkling)
Apache Spark (2.3 - 3.5)
H2O-3
Scala (版本需与 Spark 匹配)
sparkling-water hero image

快速开始

Sparkling Water

|mvn-badge| |apache-2-0-license| |由 H2O.ai 提供支持|

Sparkling Water 将 H2O-3 <https://github.com/h2oai/h2o-3/>__ 这一快速可扩展的机器学习引擎与 Apache Spark <https://spark.apache.org/>__ 集成。它提供了:

  • 用于将 Spark 数据结构(RDD、DataFrames、Datasets)发布为 H2O-3 的数据帧,反之亦然的工具。
  • 一种 DSL,允许将 Spark 数据结构用作 H2O 算法的输入。
  • 构建基于 Spark 和 H2O API 的机器学习应用的基本组件。
  • Python 接口,使用户可以直接从 PySpark 中使用 Sparkling Water。

开始使用

用户文档


`阅读 Spark 3.5 版本的文档 <http://docs.h2o.ai/sparkling-water/3.5/latest-stable/doc/index.html>`__(或
`3.4 <http://docs.h2o.ai/sparkling-water/3.4/latest-stable/doc/index.html>`__,
`3.3 <http://docs.h2o.ai/sparkling-water/3.3/latest-stable/doc/index.html>`__,
`3.2 <http://docs.h2o.ai/sparkling-water/3.2/latest-stable/doc/index.html>`__,
`3.1 <http://docs.h2o.ai/sparkling-water/3.1/latest-stable/doc/index.html>`__,
`3.0 <http://docs.h2o.ai/sparkling-water/3.0/latest-stable/doc/index.html>`__,
`2.4 <http://docs.h2o.ai/sparkling-water/2.4/latest-stable/doc/index.html>`__,
`2.3 <http://docs.h2o.ai/sparkling-water/2.3/latest-stable/doc/index.html>`__)

下载二进制文件

下载适用于 Spark 3.5 的最新版本 <http://h2o-release.s3.amazonaws.com/sparkling-water/spark-3.5/latest.html>(或 3.4 <http://h2o-release.s3.amazonaws.com/sparkling-water/spark-3.4/latest.html>3.3 <http://h2o-release.s3.amazonaws.com/sparkling-water/spark-3.3/latest.html>3.2 <http://h2o-release.s3.amazonaws.com/sparkling-water/spark-3.2/latest.html>3.1 <http://h2o-release.s3.amazonaws.com/sparkling-water/spark-3.1/latest.html>3.0 <http://h2o-release.s3.amazonaws.com/sparkling-water/spark-3.0/latest.html>2.4 <http://h2o-release.s3.amazonaws.com/sparkling-water/spark-2.4/latest.html>2.3 <http://h2o-release.s3.amazonaws.com/sparkling-water/spark-2.3/latest.html>

每个 Sparkling Water 发布版本也会被发布到 Maven Central(详情见下文)。


尝试 Sparkling Water!

Sparkling Water 以 Spark 应用程序库的形式分发,任何 Spark 应用程序都可以使用它。此外,我们还提供了一个包含库和 Shell 脚本的 ZIP 分发包。

有几种使用 Sparkling Water 的方式:

  • Sparkling Shell(内置 Sparkling Water 的 Spark Shell)
  • Sparkling Water 驱动程序(内置 Sparkling Water 的 Spark Submit)
  • 使用 Spark Shell 并通过 --jars--packages 选项引入 Sparkling Water 库
  • 使用 Spark Submit 并通过 --jars--packages 选项引入 Sparkling Water 库
  • PySpark 结合 PySparkling

运行 Sparkling Shell


Sparkling Shell 封装了普通的 Spark Shell,并通过 ``--jars`` 选项将 Sparkling Water 库添加到类路径中。Sparkling Shell 支持创建 H2O-3 集群并执行 H2O-3 算法。

1. 下载或构建 Sparkling Water。
2. 配置 Spark 集群的位置:

   .. code:: bash

      export SPARK_HOME="/path/to/spark/installation"
      export MASTER="local[*]"


   在这种情况下,``local[*]`` 指向一个嵌入式的单节点集群。
   
3. 运行 Sparkling Shell:

   .. code:: bash

      bin/sparkling-shell

   Sparkling Shell 接受常见的 Spark Shell 参数。例如,要增加每个 executor 分配的内存,可以使用 ``spark.executor.memory`` 参数:``bin/sparkling-shell --conf "spark.executor.memory=4g"``

4. 初始化 H2OContext

   .. code:: scala

      import ai.h2o.sparkling._
      val hc = H2OContext.getOrCreate()

   ``H2OContext`` 会在 Spark 集群之上启动 H2O 服务,并提供在 H2O-3 和 Spark 数据结构之间进行转换的原语。


在 PySpark 中使用 Sparkling Water

Sparkling Water 也可以直接从 PySpark 中使用,这种集成被称为 PySparkling。

请参阅 PySparkling README <http://docs.h2o.ai/sparkling-water/3.5/latest-stable/doc/pysparkling.html>__ 了解有关 PySparkling 的更多信息。

通过 Spark Packages 使用 Sparkling Water


要了解如何将 Sparkling Water 作为 Spark 包使用,请参阅 `作为 Spark 包使用 <http://docs.h2o.ai/sparkling-water/3.5/latest-stable/doc/tutorials/use_as_spark_package.html>`__。

在 Windows 环境中使用 Sparkling Water

请参阅 Windows 教程 <http://docs.h2o.ai/sparkling-water/3.5/latest-stable/doc/tutorials/run_on_windows.html>__,了解如何在 Windows 环境中使用 Sparkling Water。

Sparkling Water 示例

要查看如何运行 Sparkling Water 的示例,请参阅 `运行示例 <http://docs.h2o.ai/sparkling-water/3.5/latest-stable/doc/devel/running_examples.html>`__。

Maven 包
~~~~~~~~~~~~~~

每个 Sparkling Water 发布版本都会被发布到 Maven Central,坐标如下:

- ``ai.h2o:sparkling-water-core_{{scala_version}}:{{version}}`` - 包含 Sparkling Water 核心
- ``ai.h2o:sparkling-water-examples_{{scala_version}}:{{version}}`` - 包含示例应用程序
- ``ai.h2o:sparkling-water-repl_{{scala_version}}:{{version}}`` - 将 Spark REPL 集成到 H2O Flow UI 中
- ``ai.h2o:sparkling-water-ml_{{scala_version}}:{{version}}`` - 基于 H2O 的转换扩展了 Spark ML 包
- ``ai.h2o:sparkling-water-scoring_{{scala_version}}:{{version}}`` - 包含评分逻辑和 Sparkling Water MOJO 模型定义的库。
- ``ai.h2o:sparkling-water-scoring-package_{{scala_version}}:{{version}}`` - 轻量级 Sparkling Water 包,仅包含使用 H2O-3 和 DAI MOJO 模型进行评分所需的依赖项。
- ``ai.h2o:sparkling-water-package_{{scala_version}}:{{version}}`` - 包含模型训练和评分所需所有依赖项的 Sparkling Water 包。此包设计用于通过 ``--packages`` 选项作为 Spark 包使用。

   **注意:** ``{{version}}`` 指的是 Sparkling Water 的发布版本,而 ``{{scala_version}}`` 指的是 Scala 的基础版本。

已发布的完整包列表可在
`这里 <http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22ai.h2o%22%20AND%20a%3Asparkling-water*>`__ 查看。

--------------

Sparkling Water 后端
------------------------

Sparkling Water 支持两种后端/部署模式——内部和外部。Sparkling Water 应用程序与所选后端无关。可以在创建 ``H2OContext`` 之前指定后端。

有关内部或外部后端的更多详细信息,请参阅
`后端 <http://docs.h2o.ai/sparkling-water/3.5/latest-stable/doc/deployment/backends.html>`__。

--------------

常见问题解答
---

所有常见问题的列表可在 `FAQ <http://docs.h2o.ai/sparkling-water/3.5/latest-stable/doc/FAQ.html>`__ 中找到。

--------------

开发
-----------

完整的开发文档可在 `开发文档 <http://docs.h2o.ai/sparkling-water/3.5/latest-stable/doc/devel/devel.html>`__ 中查阅。

构建 Sparkling Water
~~~~~~~~~~~~~~~~~~~~~

如需了解如何构建 Sparkling Water,请参阅 `构建 Sparkling Water <http://docs.h2o.ai/sparkling-water/3.5/latest-stable/doc/devel/build.html>`__。

使用 Sparkling Water 开发应用程序

使用 Sparkling Water 的应用程序本质上是常规的 Spark 应用程序,只需将 Sparkling Water 库打包进去即可。Sparkling Water 提供了一个示例应用的 Droplet,详情请见 此处 <https://github.com/h2oai/h2o-droplets/tree/master/sparkling-water-droplet>__。

贡献


只需向我们提交一个 Pull Request 即可!您可以参考我们的 `问题列表 <https://github.com/h2oai/sparkling-water/issues/new/choose>`__ 获取灵感,也可以随时创建一个新的问题。

提交 Bug 报告和功能请求

您可以在 GitHub Issues 中直接提交 Bug 报告或功能请求:GitHub Issues <https://github.com/h2oai/sparkling-water/issues/new/choose>__。

有疑问吗?


我们也会在 `Stack Overflow <https://stackoverflow.com/questions/tagged/sparkling-water>`__ 上回复带有 sparkling-water 和 h2o 标签的问题。

变更日志
~~~~~~~~~~~

变更日志可在 `变更日志 <http://docs.h2o.ai/sparkling-water/3.5/latest-stable/doc/CHANGELOG.html>`__ 中查看。

---------------

.. |加入 https://gitter.im/h2oai/sparkling-water 的聊天室| image:: https://badges.gitter.im/Join%20Chat.svg
   :target: https://gitter.im/h2oai/sparkling-water?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
.. |mvn-badge| image:: https://maven-badges.herokuapp.com/maven-central/ai.h2o/sparkling-water-core_2.12/badge.svg
   :target: http://search.maven.org/#search%7Cgav%7C1%7Cg:%22ai.h2o%22%20AND%20a:%22sparkling-water-core_2.12%22
.. |apache-2-0-license| image:: https://img.shields.io/badge/License-Apache%202-blue.svg
   :target: LICENSE
.. |由 H2O.ai 提供支持| image:: https://img.shields.io/badge/powered%20by-h2oai-yellow.svg
   :target: https://github.com/h2oai/

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|2周前
Agent开发框架图像

n8n

n8n 是一款面向技术团队的公平代码(fair-code)工作流自动化平台,旨在让用户在享受低代码快速构建便利的同时,保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点,帮助用户轻松连接 400 多种应用与服务,实现复杂业务流程的自动化。 n8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”:既可以通过直观的可视化界面拖拽节点搭建流程,也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外,n8n 原生集成了基于 LangChain 的 AI 能力,支持用户利用自有数据和模型构建智能体工作流。在部署方面,n8n 提供极高的自由度,支持完全自托管以保障数据隐私和控制权,也提供云端服务选项。凭借活跃的社区生态和数百个现成模板,n8n 让构建强大且可控的自动化系统变得简单高效。

184.7k|★★☆☆☆|今天
数据工具开发框架Agent

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|2周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

161.1k|★★☆☆☆|今天
开发框架Agent语言模型

opencode

OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信

144.3k|★☆☆☆☆|3天前
Agent插件

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|昨天
开发框架图像Agent