¿Qué es LIVY?

Livy es una librería open-source que permite interactuar con un cluster Spark vía un interface REST.

Permite enviar Jobs Spark o simples trozos de código Spark de forma síncrona o asíncrona.

Livy simplifica la interacción con Spark desde aplicaciones móviles, AppServers,….

Entre sus características:

· Gestión de la seguridad

· Ofrece SparkContexts long-running que pueden usarse para múltiples Jobs Spark desde múltiples clientes

· Comparte DataFrames y RDDs entre Jobs y clientes

· Gestión simultánea de diversos SparkContexts (permite por ejemplo tener uno por cliente ;)) lo que es muy interesante para el multiteant, gestión de la concurrencia,…

· Los Jobs pueden enviarse como JARS, trozos de código, API Java, Scala, Python.

Veamos cómo se puede usar:

Cargando un JAR con un Job Spark:

Lanzando un código Spark directamente:

Primero establezco una sesión:

Que una vez iniciada para al estado idle:

Una vez en este estado puede enviar el código (aquí un simple 1+1):

Para obtener el resultado del proceso haré un polling:

Con la sesión puedo lanzar código más complejo:

Finalmente cierro la sesión:

Muy interesante también es su integración con Zeppelin como intérprete Zeppelin, lo que nos permite invocarlo así:

Y soportar multitenant: Apache Zeppelin + Livy: Bringing Multi Tenancy to Interactive Data Analysis

También soporta el uso de Dynamics Forms de Zeppelin: