He empezado a jugar con Zeppelin recientemente. Es un gran cuaderno basado en web que permite realizar análisis en tiempo real. Es compatible con una variedad de backends a través del concepto de intérpretes.
Zeppelin Interpreter es el plug-in que permite al usuario de zeppelin utilizar un lenguaje específico/procesamiento de datos-backend. Por ejemplo, para utilizar código scala en Zeppelin, necesitas el intérprete spark.
Ya puedes realizar algunos trabajos relacionados con Couchbase utilizando su intérprete Spark y la aplicación Conector Spark de Couchbase. Pero sólo quiero ejecutar algunas consultas N1QL en pads, como con Spark SQL y DataFrames. Así que necesito crear un intérprete N1QL para Couchbase. Hacerlo es fácil y documentadosólo necesitas una clase.
Esta clase debe extender la clase abstracta org.apache.zeppelin.interpreter.Interpreter resultando en tener que implementar los siguientes métodos abstractos: abra
, cerrar
, interpretar
, getFormType
, getProgress
, finalización
.
Que es más o menos lo que hice aquí:
abra
y cerrar
se encargan respectivamente de abrir y cerrar la conexión con el Cluster y el Bucket. El método de interpretación es el que se ejecuta cuando se ejecuta el pad. Aquí es donde transformas el texto del pad en lo que quieras. Para este intérprete tomaré una consulta N1QL, la ejecutaré y transformaré el resultado para que pueda ser usado en Zeppelin. Aquí transformar significa aplanar los documentos JSON resultantes ya que todo tiene que estar en forma de tabla.
Ahora puedo ejecutar las consultas N1QL que quiera. Aquí's un simple ejemplo tomado de la muestra de juego cubo:
Puedes ver una tabla de clasificación en la parte inferior izquierda, la lista de jugadores ordenada por nivel en la esquina superior izquierda y la distribución de objetos por jugador también ordenada por nivel. Puede ver que no hay correlación entre el nivel del jugador y el número de objetos que tiene. La consulta subyacente está utilizando un JOIN, que está disponible de forma nativa con N1QL.
Podríamos añadir muchas otras funciones. Supongo que la primera que te viene a la mente cuando conoces Zeppelin es autocompletar. Puede ser útil en muchas situaciones, ya sea para palabras clave N1QL o campos json. De hecho, tenemos esta característica disponible en el Interfaz de consulta si introduce el tab
tecla o Ctrl+Espacio
. Otras características interesantes podrían ser el soporte de Views, especialmente para consultas geoespaciales, y de Couchbase FTS. He comenzado el desarrollo del plugin en Githuby puede seguirlo en el sitio Apache seguimiento de problemas. Como siempre, los comentarios y las contribuciones son más que bienvenidos.