火花与水和苏打水之间的区别

Difference between spark with h2o and sparkling water

我对苏打水有一些疑问或疑问,为什么需要它。

假设我生成了一个包含二进制和 pojo 的 h2o 模型。

现在我想将模型部署到生产环境中,并可以选择同时使用 pojo 和二进制(苏打水)。

  1. 我应该使用哪一个?直接用 pojo 火花或用 Binary 苏打水。
  2. 当我们可以使用 pojo 和 spark 本身轻松部署模型时,苏打水的确切用途是什么?
  3. 苏打水是不是只有在海量数据上训练模型的时候才需要?或者它也可以用于模型的 PROD 部署。

示例:https://github.com/h2oai/h2o-droplets/blob/master/h2o-pojo-on-spark-droplet/src/main/scala/examples/PojoExample.scala

将 spark 用于 运行 pojo 模型。

示例:https://github.com/h2oai/h2o-droplets/blob/master/sparkling-water-droplet/src/main/scala/water/droplets/SparklingWaterDroplet.scala

在苏打水中训练/运行模型。

与普通火花相比,苏打水 h2o 有哪些优势?

  1. 我应该使用哪一个?直接用 pojo 火花或用 Binary 苏打水。

    • 没有'right'答案,这取决于您的用例。听起来您想要的是 Spark 中的 POJO/MOJO,这样您就可以进行评分,而无需额外依赖 H2O 集群。
  2. 当我们可以使用 pojo 和 spark 本身轻松部署模型时,苏打水的确切用途是什么?

    • Sparkling Water 的确切用途是在 Spark 上下文中提供 H2O。这对于 训练 特别有用:您可以利用 Spark 的许多数据连接器、修改功能等。 POJO/MOJO + Spark 足以 评分
  3. 只有在海量数据上训练模型才需要苏打水吗?或者它也可以用于模型的 PROD 部署。

    • 如果您想在与 Spark 生态系统完美配合的环境中利用 H2O 的算法,就需要 Sparkling Water。

如果将模型放入 "production" 意味着将 "always on" 评分公开为 REST 端点或类似的:POJO/MOJO 是您想要的方式(H2O 集群不是高度可用的)。不过,您需要确保自己正确处理传入数据。

如果您每晚或以其他方式进行批量评分,那么使用带有 Sparkling Water 的二进制模型可能有意义,因为解析传入数据变得微不足道(asH2OFrame(..))并且评分很容易预测( )