Fri. Sep 30th, 2022

Ponga un poco de magia en sus cuadernos Spark SQL con el editor mágico de celdas SQL de JupyterLab

Foto de Julia Kadel en Unsplashjupyterlab-sql-editor es una magia de ipython que le permite escribir análisis componibles en Spark SQL. Esta extensión de jupyterlab tiene un amplio conjunto de características: Autocompletado de
– nombres de tablas, nombres de columnas, subcampos anidados
– uniones de mesa
– funciones Resaltado y formateo de sintaxis SQLMúltiples salidas de pantalla
– html y texto sin formato
– cuadrícula de datos interactiva y árbol json
– captura de marco de datos y vistasjupyterlab-sql-editor amplía JupyterLab con formato SQL y resaltado de sintaxis.jupyterlab-sql-editor también registra un servidor LSP que proporciona autocompletado. Presione la tecla para activar el autocompletado de nombres de tablas y columnas, incluidos los subcampos anidados. Utilizar el %%sparksql –actualizar todo Comando para actualizar el archivo de caché local utilizado por el autocompletador. El comando de actualización enumera las funciones, tablas y columnas que se encuentran en el contexto de chispa actual.Funciones de Autocompletar Spark SQL con documentación y ejemplos de uso.También hay algunas funciones para usuarios avanzados, como el llenado automático de todos los nombres de columna en la declaración SELECT y la sugerencia automática de condiciones JOIN en los nombres de columna coincidentes.La magia de sparksql es una forma conveniente de ejecutar sentencias de spark sql. En este ejemplo, ejecutamos una declaración e imprimimos los resultados como texto.%% chispasql –output textSELECT * from range(1, 1000) Podemos hacer lo mismo en python.statement = ‘select * from range(1, 1000)’
df = chispa.sql(sentencia)
df.show() Como puede ver, no es realmente mágico. La magia de sparksql toma el cuerpo de una celda como declaración, la ejecuta e imprime los resultados. La extensión simplemente encapsula el código Python repetitivo y lo hace fácilmente disponible a través de las opciones de la línea de comandos. Jupyterlab-sql-editor admite un amplio conjunto de formatos de salida, como una cuadrícula de datos interactiva. Usamos el ipydatagrid de Bloomberg que puede posprocesar (ordenar, filtrar y buscar) los resultados devueltos por la consulta de Spark.Un widget de árbol muestra el esquema de los resultados. Esto es especialmente útil para las columnas que contienen estructuras de datos anidadas complejas.Utilice la salida JSON para navegar por el contenido de columnas anidadas complejas. Esta salida utiliza el widget de árbol de ipython estándar que puede buscar en cualquiera de los campos anidados.Hasta ahora, hemos visto principalmente cómo consultar datos, sin embargo, no está limitado a consultas. Puede realizar cualquier instrucción SQL compatible con Spark SQL.%% chispasql
CREAR TABLA prod.db.sample (
id bigint COMENTARIO ‘identificación única’,
cadena de datos)
UTILIZANDO iceberg%% chispasql
ALTER TABLE prod.db.muestra
AGREGAR COLUMNAS (
new_column cadena comentario ‘new_column docs’
)Usar la línea mágica %sparksql para declaraciones simples de una sola línea%sparksql SET chispa.sql.variable.substitute=false
%sparksql DROP TABLE prod.db.muestra
%sparksql CALL prod.system.set_current_snapshot(‘db.sample’, 1)Expresiones de tabla comunes (CTE) es una forma estándar de dividir declaraciones SQL grandes en partes más manejables. Jupyterlab-sql-editor no solo es compatible con CTE, sino que también le permite capturar o alias de declaraciones SQL como vistas que luego se pueden reutilizar en celdas posteriores. Este mecanismo aprovecha el marco de datos de Spark createOrReplaceTempView función. Utilizar el –vista opción para crear una vista temporal. Para evitar la ejecución inmediata de la consulta, utilice el –saltar salida opción. Cuando se utiliza esta opción, solo se crea la vista.El autocompletado también funciona en vistas temporales. Utilizar el %%sparksql –actualizar local opción para actualizar su archivo de caché de autocompletar con cualquier vista local que haya creado. Hasta ahora, hemos visto cómo usar las vistas SQL para crear análisis SQL componibles. Sin embargo, no está limitado solo a SQL, puede cambiar de SQL a marco de datos y viceversa. Partes de su análisis pueden adaptarse mejor a la API de marco de datos, ya que otras pueden prestarse mejor al dialecto SQL. Jupyterlab-sql-editor hace que sea muy fácil cambiar entre dialectos. Utilizar el–marco de datosopción para convertir una instrucción SQL como marco de datos.Dado cualquier marco de datos, vuelva a SQL llamando df.createOrReplaceTempView(). Por ejemplo, podría estar usando Spark ML, Spark GraphFrames o simplemente usando una fuente de datos como CSV. Muchas de las bibliotecas en Spark crean dataframes.df = spark.read.csv(path)
df.createOrReplaceTempView(‘my_csv_table’) Luego consulte la vista que creó en %% chispasql%% chispasql
SELECCIONE * DE my_csv_tableRecuerde actualizar su caché local ejecutando %%sparksql –actualizar local ¡y disfrute del autocompletador! jupyterlab-sql-editor tiene dos dependencias principales. jupyterlab-lsp y sql-language-server. Instalar la extensión es muy fácil.pip install jupyterlab-lsp jupyterlab-sql-editorInstale el proyecto sql-language-server para proporcionar autocompletado.sudo npm install -g sql-language-serverPara obtener una lista completa de las opciones de configuración, consulte la guía de instalación detallada. En este artículo mostramos cómo aprovechar %% chispasql para escribir fácilmente análisis componibles en Spark SQL. Nos enfocamos en Spark, sin embargo, jupyterlab-sql-editor también incluye un %%trino ¡magia! Es posible que se agreguen más motores SQL en el futuro. ¡Las contribuciones son bienvenidas! Aquí está nuestro repositorio git CybercentreCanada/jupyterlab-sql-editor. En un artículo de seguimiento, cubriremos el soporte de jupyterlab-sql-editor para plantillas SQL usando Jinja y DBT. A los contribuyentes de estos proyectos: krassowski/jupyterlab-lsp
joe-re/sql-language-server
zeroturnaround/sql-formateador
cryeo/sparksql-magia
bloomberg/ipydatagrid