¿Cuáles son los pros y los contras de Spark MLlib vs. H2O?

Esta respuesta se basa en información que tiene 3 meses de antigüedad, así que verifique dos veces. AFAIK la diferencia fundamental entre H2O y Spark MLLib es que H2O opera en un formato de datos especial (.hex) [1], mientras que MLLib acepta un RDD o un conjunto de datos que son las estructuras de datos básicas de Spark. Esto cambia el enfoque que adopta en la gestión de datos; ya sea un enfoque integrado verticalmente para H2O o un enfoque abierto para MLLib. Ambos tienen sus pros y sus contras.

En términos de algoritmos disponibles, diría que están a la par, ya que cada uno de ellos tiene un algoritmo para cada tarea, aunque sus elecciones de algoritmos y sus implementaciones varían. Pero eso realmente no importa mucho si tienes buenos datos.

En términos del flujo de trabajo de desarrollo, ambos dejan mucho que desear. Tendrá que construir un proceso de desarrollo en torno a cualquiera. H2O al menos está tratando de resolver el problema, pero Spark lo deja a Databricks.

[1] Datos: documentación de H2O 2.3.0.1283

Hoy, ambos todavía están bastante desarrollados y aún necesitan trabajo. Entonces la elección es bastante subjetiva.

  • Algunos algoritmos se implementan mejor en uno frente al otro.
  • ¿Qué idioma prefieres? Scala? R?

H2O parece escalar mejor que Spark MLlib de acuerdo con los números de referencia aquí: szilard / benchm-ml

Spark MLlib no está listo para producción, en general. Y Spark en sí no es un motor útil para la computación. Es muy lento En el mejor de los casos, debe usarse como acceso rápido a datos / ETL.

H2O es bueno para bosques aleatorios y GBM. Vienen en un POJO. Sirve a las comunidades R y Python.

Ninguno de los dos realmente hace aprendizaje profundo (envuelven los marcos de otras compañías, por lo que casi no tienen la capacidad de mantener o extender el código subyacente).

¿Para qué quieres usarlos?