Saludos!
El método .registerTempTable("[alias]") está deprecado para las nuevas versiones. En ese caso se usa el método .createOrReplaceTempView("[alias]").
Conociendo Apache Spark
Fundamentos de Apache Spark: ETL y Limpieza de Datos
Introducción a Apache Spark y sus diferencias con Hadoop
Diferencias entre RDDs y DataFrames en Apache Spark
Configuración
Instalación de Spark y Anaconda en Linux
Ejecución y Configuración de Spark en Línea de Comando y Anaconda
Configuración de PySpark con Jupyter y Anaconda
Operaciones RDDs
Transformaciones y Acciones en RDD de Spark
Transformaciones y acciones
Interacción con RDDs en Spark: Operaciones Básicas y Avanzadas
Operaciones avanzadas con RDDs en Spark: Uniones y Joins
Unión de Datos en RDD para Deportistas Olímpicos
Operaciones Numéricas con RDDs en Juegos Olímpicos
Data Frames y SQL
Creación y Gestión de Data Frames en PySpark
Creación de DataFrame desde RDD en PySpark
Manipulación de Data Frames en PySpark
Joins y Selección de Datos en DataFrames con PySpark
Filtrado y Join de Datos Olímpicos en Pandas
Funciones de Agregación en Spark para DataFrames
Uso de SQLContext para Registro y Consultas con DataFrames en Spark
Creación y Uso de Funciones UDF en Spark
Creación y uso de UDFs en PySpark para manejo de datos faltantes
Persistencia y particionado
Particionado y Replicación de Datos en Spark RDDs
Persistencia y Particionado de Datos en Spark
Particionamiento de RDDs y DataFrames en Spark con PySpark
Conclusiones
Uso de RDDs y DataFrames en Apache Spark
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Integrar Spark con SQL puede ser un poderoso recurso para los amantes de SQL que desean aprovechar sus habilidades en el análisis y gestión de datos grandes. Aquí, aprenderemos a registrar data frames como tablas temporales y utilizar SQL de una manera práctica y eficiente.
Para emplear data frames como tablas en SQL, primero debemos registrarlos como tablas temporales. En nuestro ejemplo, registraremos tres data frames: resultado
, deportista olímpico
y países
. Usamos el método register
con un alias que simplifica su uso posterior.
# Registro de data frames como tablas temporales
resultado.registerTempTable("resultado")
deportista_olímpico.registerTempTable("deportista")
países.registerTempTable("paises")
El objeto SQLContext
en Spark nos permite ejecutar comandos SQL directamente. Puedes especificar las sentencias SQL respetando el uso de palabras reservadas en mayúsculas por buenas prácticas. Por ejemplo:
# Ejecución de una consulta SQL simple
sqlContext.sql("SELECT medalla, equipo, sigla FROM resultado").show(5)
Aunque SQL es poderoso y familiar para muchos, el enfoque nativo de Spark ofrece ventajas significativas en rendimiento y eficiencia. A continuación, se realiza un ejemplo de consulta más complejo usando SQL, realizando JOINs
entre tablas y aplicando restricciones.
SELECT medalla, equipo, sigla
FROM resultado AS r
JOIN deportista AS d ON r.deportistaID = d.deportistaID
JOIN paises AS p ON d.equipoID = p.ID
WHERE medalla IS NOT NULL
ORDER BY sigla DESC
En resumen, elegir entre SQL y las funciones nativas de Spark depende del contexto y el tamaño de las operaciones. Es fundamental identificar cuál herramienta se alinea mejor con las necesidades de procesamiento sin comprometer la eficiencia. ¡Sigue explorando Spark y SQL para mejorar tus capacidades analíticas y de procesamiento de datos!
Aportes 5
Preguntas 3
Saludos!
El método .registerTempTable("[alias]") está deprecado para las nuevas versiones. En ese caso se usa el método .createOrReplaceTempView("[alias]").
Vi que esta mostrando duplicados por lo que agregue la palabra DISTINCT despues del SELECT para eliminar los duplicados.
sqlContext.sql("""SELECT DISTINCT medalla, equipo, sigla
FROM resultado r
JOIN deportista d
ON r.deportista_id = d.deportista_id
JOIN paises p
ON p.equipo_id = d.equipo_id
WHERE medalla <> "NA"
ORDER BY sigla DESC
""").show()
para los que quieren conectar spark con postgresql en ubuntu yo hize lo siguiente baje el driver de JDBC https://jdbc.postgresql.org/download.html
descomprimi el archivo lo copie en descargas y lo pegue en la siguiente ruta /usr/share/java/ quedando
usr/share/java/postgresql-42.3.1.jar, luego exporte la ruta al CLASSPATH con el siguiente comando (export CLASSPATH="$CLASSPATH:/usr/share/java/postgresql-42.3.1.jar"), y quedo listo para usar.
despues en jupyter notebook escribi el siguiente codigo para conectar a la base
<code>
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.jars", "/usr/share/java/postgresql-42.3.1.jar") \
.getOrCreate()
df = spark.read \
.format("jdbc") \
.option("url", "jdbc:postgresql://localhost:5432/nombredelabase") \
.option("dbtable", "nombredelatabla") \
.option("user", "postgres") \
.option("password", "password") \
.option("driver", "org.postgresql.Driver") \
.load()
df.printSchema()
espero les sirva
interesante
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?