Introducción a los DataFrames de PySpark

Fundamentos de big data con PySpark

Upendra Devisetty

Science Analyst, CyVerse

¿Qué son los DataFrames de PySpark?

  • PySpark SQL es la librería de Spark para datos estructurados. Aporta más info sobre la estructura y el cómputo

  • Un DataFrame de PySpark es una colección distribuida inmutable con columnas con nombre

  • Diseñado para datos estructurados (p. ej., BD relacionales) y semiestructurados (p. ej., JSON)

  • La API de DataFrame está en Python, R, Scala y Java

  • En PySpark, los DataFrames aceptan consultas SQL (SELECT * from table) o métodos de expresión (df.select())

Fundamentos de big data con PySpark

SparkSession: punto de entrada de la API DataFrame

  • SparkContext es la puerta de entrada para crear RDDs

  • SparkSession ofrece un único punto de entrada para trabajar con DataFrames de Spark

  • Con SparkSession creas DataFrames, los registras y ejecutas SQL

  • En el shell de PySpark, SparkSession está disponible como spark

Fundamentos de big data con PySpark

Crear DataFrames en PySpark

  • Dos formas de crear DataFrames en PySpark

    • Desde RDDs con SparkSession.createDataFrame()

    • Desde fuentes (CSV, JSON, TXT) con SparkSession.read

  • El esquema controla los datos y ayuda a optimizar consultas

  • El esquema define nombre de columna, tipo, valores vacíos, etc.

Fundamentos de big data con PySpark

Crear un DataFrame desde un RDD

iphones_RDD = sc.parallelize([
    ("XS", 2018, 5.65, 2.79, 6.24),
    ("XR", 2018, 5.94, 2.98, 6.84),
    ("X10", 2017, 5.65, 2.79, 6.13),
    ("8Plus", 2017, 6.23, 3.07, 7.12)
])
names = ['Model', 'Year', 'Height', 'Width', 'Weight']
iphones_df = spark.createDataFrame(iphones_RDD, schema=names)

type(iphones_df)
pyspark.sql.dataframe.DataFrame
Fundamentos de big data con PySpark

Crear un DataFrame leyendo CSV/JSON/TXT

df_csv = spark.read.csv("people.csv", header=True, inferSchema=True)
df_json = spark.read.json("people.json")
df_txt = spark.read.txt("people.txt")
  • Ruta al archivo y dos parámetros opcionales

  • Dos parámetros opcionales

    • header=True, inferSchema=True
Fundamentos de big data con PySpark

¡Vamos a practicar!

Fundamentos de big data con PySpark

Preparing Video For Download...