BauSparkScriptsStudio

Aplicación para ejecución de scripts SQL sobre Spark


BauSparkScriptsStudio

Como decía en el artículo anterior llevo unos meses dándole vueltas y aprendiendo a utilizar Spark .

Mi intención era más aprender sobre Spark Sql que sobre PySpark. No tengo nada contra Python, al contrario, pero me interesaba sobre todo ver las ventajas que me ofrece Spark frente a otros sistemas de bases de datos y sus posibilidades. Por tanto, atacar a Spark utilizando Python estaba fuera de contexto (al menos por el momento).

Siempre podemos utilizar Spark Sql con el shell pero la verdad es que acostumbrado a herramientas como Sql Server Management Studio, se me quedaba bastante corto. Además, tampoco podía lanzar un script (una serie de consultas consecutivas, por ejemplo) sin escribirlas una por una. No digo que no se pueda, digo que no lo he conseguido.

Mi primera idea fue utilizar Dbeaver pero aunque me permitía conectarme a la base de datos y realizar consultas una por una, tampoco me permitía ejecutar scritps (de nuevo: no sé si puede, digo que yo no lo conseguí). Además tampoco he conseguido que me muestre correctamente el esquema de la base de datos, supongo que también problema mío.

El caso es que sabiendo que Visual Studio Code tiene extensiones para todo, me encontré con una llamada Spark and hive tools que tenía buena pinta y promete hacer todo lo que yo necesitaba pero que no he conseguido ejecutar contra mi máquina local.

Tiene conexiones con HDinsight, Sql Server Big Data Cluster y máquinas locales utilizando Livy, pero, de nuevo torpeza mía, no he sido capaz de hacerlo funcionar.

Lo que sí encontré fue un driver ODBC de Microsoft para Spark . Por supuesto: hay más, pero éste me ha funcionado perfectamente.

Total, como bien sabe quien me conoce, con un ODBC en las manos no hacía falta mucha provocación más para escribir una aplicación, así que me puse a ello y nació BauSparkScripts.Studio .

En resumen BauSparkScripts.Studio es una aplicación que permite, entre otras cosas, ejecutar consultas y scripts sobre un sistema Spark usando SparkSql directamente sin necesidad de scripts de Python, es decir, una aplicación que soluciona mi problema inicial.

Conexiones

Como es normal, para poder ejecutar SQL sobre Spark, vamos a necesitar una conexión.

Por no complicarme la vida, una vez instalado el driver ODBC de Microsoft, me creé una DSN en mi máquina utilizando el administrador de orígenes de datos de 32 bits:

Configuración de ODBC

En este caso la he llamado LocalSpark32 . Recordad que para tener un servidor ODBC levantado en Spark necesitáis ejecutar la siguiente instrucción (como vimos en el artículo de instalacion de Spark ):

	
		$SPARK_HOME/sbin/start-thriftserver.sh
	

Nota: la aplicación ahora mismo está compilada a 32 bits, por eso utiliza el driver ODBC de 32 bits. Para utilizar el de 64 bits habría que recompilarla a 64 desde los fuentes. No supone ningún problema adicional.

Una vez definido, en BauSparkScripts.Studio debemos pulsar el botón de Añadir conexión y escribir en la cadena de conexión DSN = LocalSpark32 o el nombre de la DSN creada anteriormente.

Creación de una nueva conexion

En teoría se podría escribir una cadena de conexión ODBC completa pero la verdad es que el driver tiene demasiadas opciones como para hacerlo manualmente.

Una vez establecida la conexión, podemos ver el esquema de tablas definidas en nuestro servidor (si hay alguna, por supuesto):

Árbol de conexiones

En mi caso, ya tengo un par de tablas definidas. Pulsando dos veces sobre una tabla, se nos abre una ventana de consulta y podemos ejecutarla con el botón que hay debajo de la consulta:

Ventana de consulta

El botón de Consulta de la barra de herramientas nos abrirá una ventana de consulta vacía en cualquier momento.

El botón de Grabar que se encuentra sobre la tabla de resultados, nos permite guardar el resultado en un archivo CSV.

Por último, el combo de conexiones nos permite seleccionar la conexión sobre la que deseamos ejecutar la consulta si hemos definido más de una conexión.

Archivos y scripts

Aparte del árbol de conexiones que veíamos antes, tenemos un árbol de archivos. Para añadir una carpeta a nuestro árbol y poder comenzar a trabajar con los archivos, simplemente pulsamos sobre el botón Nueva carpeta y seleccionamos la carpeta de nuestro ordenador donde tengamos nuestros scripts:

Árbol de archivos

En mi caso, he seleccionado una carpeta de mi equipo en la que hay tanto archivos parquet como archivos SQL.

Si pulsamos un par de veces sobre un archivo parquet, podremos ver su contenido (en bloques de 10.000 líneas, por ahora no configurable, cosas del directo):

Archivo parquet

Con el botón de guardar, grabamos el contenido del archivo parquet en un archivo CSV.

Por supuesto, si pulsamos sobre un script SQL, podemos ver y modificar el contenido del archivo:

Visualizar archivo de script

y ejecutarlo:

Ejecucion de consulta.jpg

Para los scripts, dado que no quería meterme en escribir un intérprete de SQL (lo siento, ya he pasado por esa experiencia y no la recuerdo nada agradable), decidí que la separación entre los diferentes comandos de SQL fuera la instrucción GO (sí, como si estuviérais utilizando SqlCmd).

Siguientes artículos

La aplicación permite utilizar parámetros de consulta, variables de entorno y exportación a notebooks de Databricks pero creo que como presentación (y porque se me acaba el tiempo de hoy), ya es suficiente.

Descarga

Podéis descargar la aplicación desde aquí .

Y para ver los fuentes podéis entrar en Github .

Por supuesto, aún está en fase de desarrollo y le faltan muchas cosas pero espero seguir evolucionándolo y escribir sobre ello.

Páginas relacionadas