Operações avançadas com DataFrames

Introdução ao PySpark

Ben Schmidt

Data Engineer

Joins no PySpark

  • Combine linhas de dois ou mais DataFrames com base em colunas comuns
  • Tipos de joins: inner, left, right e outer, como no SQL

  • Sintaxe: DataFrame1.join(DataFrame2, on="column", how="join_type")

# Join na coluna id usando inner join
df_joined = df1.join(df2, on="id", how="inner")

# Join em colunas com nomes diferentes df_joined = df1.join(df2, df1.Id == df2.Name, "inner")
Introdução ao PySpark

Operação de União

  • Combina linhas de dois DataFrames com o mesmo esquema

  • Sintaxe: DataFrame1.union(DataFrame2)

# União de dois DataFrames com esquemas idênticos
df_union = df1.union(df2)
Introdução ao PySpark

Trabalhando com Arrays e Mapas

Arrays: Úteis para armazenar listas em colunas, sintaxe: ArrayType(StringType(),False)`

from pyspark.sql.functions import array, struct, lit

# Criar uma coluna de array
df = df.withColumn("scores", array(lit(85), lit(90), lit(78)))

Mapas: Pares chave-valor, úteis para dados tipo dicionário, MapType(StringType(),StringType())

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

schema = StructType([
    StructField('name', StringType(), True),
    StructField('properties', MapType(StringType(), StringType()), True)
])
Introdução ao PySpark

Trabalhando com Structs

  • Structs: Criar estruturas aninhadas dentro das linhas Sintaxe: StructType(Structfield, Datatype())
# Criar uma coluna de struct
df = df.withColumn("name_struct", struct("first_name", "last_name"))

# Criar uma coluna de struct df = df.withColumn("name_struct", struct("first_name", "last_name"))
Introdução ao PySpark

Vamos praticar!

Introdução ao PySpark

Preparing Video For Download...