Introdução a DataFrames no PySpark

Fundamentos de Big Data com PySpark

Upendra Devisetty

Science Analyst, CyVerse

O que são DataFrames no PySpark?

  • PySpark SQL é a biblioteca do Spark para dados estruturados. Ela descreve melhor a estrutura dos dados e do cálculo

  • PySpark DataFrame é uma coleção distribuída e imutável com colunas nomeadas

  • Feito para dados estruturados (ex.: banco relacional) e semiestruturados (ex.: JSON)

  • A API de DataFrame existe em Python, R, Scala e Java

  • DataFrames no PySpark suportam consultas SQL (SELECT * from table) e métodos de expressão (df.select())

Fundamentos de Big Data com PySpark

SparkSession – ponto de entrada da API de DataFrame

  • SparkContext é a porta de entrada para criar RDDs

  • SparkSession é a entrada única para trabalhar com DataFrames

  • SparkSession cria DataFrames, registra DataFrames e executa SQL

  • No shell do PySpark, SparkSession é spark

Fundamentos de Big Data com PySpark

Criando DataFrames no PySpark

  • Duas formas de criar DataFrames no PySpark

    • De RDDs existentes com SparkSession.createDataFrame()

    • De fontes de dados (CSV, JSON, TXT) com SparkSession.read

  • O schema controla os dados e ajuda a otimizar consultas

  • O schema informa nome de coluna, tipo de dado, valores vazios etc.

Fundamentos de Big Data com PySpark

Criar um DataFrame a partir de um 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 com PySpark

Criar um DataFrame lendo 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")
  • Caminho do arquivo e dois parâmetros opcionais

  • Dois parâmetros opcionais

    • header=True, inferSchema=True
Fundamentos de Big Data com PySpark

Vamos praticar!

Fundamentos de Big Data com PySpark

Preparing Video For Download...