Consultas y Filtrado Avanzado con Spark SQL

Clase 17 de 25Curso de Databricks: Arquitectura Delta Lake

Resumen

¿Cómo trabajar con archivos y esquemas en Spark SQL?

Para triunfar en el manejo de datos, es esencial comprender cómo leer y manipular información adecuadamente. En el contexto de Spark SQL, aprender a importar y definir esquemas es el primer paso crucial. Comencemos cargando un archivo persona.data, al cual aplicamos un esquema de metadatos. Esto nos permite especificar claramente los tipos de datos para cada campo, como ID, nombre o correo electrónico.

from pyspark.sql.types import StructType, StructField, StringType

schema = StructType([
    StructField("ID", StringType(), True),
    StructField("Nombre", StringType(), True),
    StructField("Teléfono", StringType(), True),
    # Añade los demás campos aquí
])

dfPersona = spark.read.format("csv") \
    .option("header", "true") \
    .schema(schema) \
    .load("/FileStore-CursoDatabricks/persona.data")
dfPersona.show(10)

Este enfoque asegura que puedas manejar los datos adecuadamente, reduciendo riesgos de errores al definir claramente los tipos.

¿Cómo crear y manejar una vista temporal?

Para mejorar el manejo de consultas SQL en Spark, es esencial crear una vista temporal de los datos. Esto nos permite interactuar con los datos como si fueran una tabla en SQL. Crear una vista es sencillo:

dfPersona.createOrReplaceTempView("dfPersonaView")

Una vez creada, puedes ejecutar consultas SQL directamente sobre esta vista:

result = spark.sql("SELECT * FROM dfPersonaView WHERE edad > 30")
result.show(10)

Esto simplifica la aplicación de filtros y condiciones, maximizando la eficiencia en tu análisis de datos.

¿Cómo optimizar consultas largas en Spark SQL?

Las consultas extensas pueden complicarse y volverse difíciles de manejar. Aquí destacamos el uso de triple comillas para simplificar y estructurar consultas largas, haciéndolas más legibles:

query = """
SELECT id, nombre, correo
FROM dfPersonaView
WHERE edad > 30 AND salario > 5000
"""
dfResult = spark.sql(query)
dfResult.show(10)

Este método mejora la claridad del código, facilitando el entendimiento y mantenimiento de tus consultas.

¿Qué ventajas tiene la parametrización en consultas SQL?

Incorporar parámetros en tus consultas añade dinamismo y flexibilidad, permitiendo cambios sin modificar la lógica SQL:

paramEdad = 30
paramSalario = 5000

query = f"""
SELECT id, nombre, correo
FROM dfPersonaView
WHERE edad > {paramEdad} AND salario > {paramSalario}
"""
dfResult = spark.sql(query)
dfResult.show(10)

La parametrización permite una gestión más eficiente y adaptable de tus consultas, agilizando los procesos de modificación y mantenimiento.

¿Cómo practicar y aplicar estos conceptos?

Nada refuerza el aprendizaje más que la práctica continua. Aquí te presentamos tres ejercicios que te permitirán aplicar lo aprendido:

  1. Seleccionar nombre y edad de personas mayores de 28 años.
  2. Calcular la edad promedio en el DataFrame.
  3. Extraer nombre, edad y dirección de personas con direcciones registradas.

Desafíate a resolver estos ejercicios utilizando las técnicas presentadas y fortalece tus habilidades en Spark SQL. ¡Sigue explorando, aprendiendo y dominando este vasto mundo de la gestión de datos!