PySpark & Databricks — Cheat Sheet
Databricks / PySpark

Guia de Comandos PySpark

Categorias em acordeão — abra só o que precisa. Use a busca para achar rápido.
01

Leitura de Dados spark.read

▶
Carregar arquivos de diferentes formatos para memória como DataFrame.
spark.read.csv("caminho", header=True, inferSchema=True)

Lê CSV com cabeçalho e tipos automáticos.

spark.read.parquet("caminho")

Lê arquivos Parquet.

spark.read.table("nome_tabela")

Lê tabela do Unity Catalog.

spark.read.json("caminho")

Lê arquivos JSON.

spark.read.format("delta").load("caminho")

Lê dados em formato Delta pelo caminho físico.

spark.read.option("delimiter", ";").csv("caminho")

Define opções extras de leitura (delimitador, encoding, etc).

02

Visualização e Inspeção o "SELECT *"

▶
Para entender como os dados estão organizados e conferir resultados.
df.display()

Exibe a tabela formatada — o melhor comando do Databricks.

df.printSchema()

Mostra colunas e tipos (INT, STRING, TIMESTAMP...).

df.show(5) · df.limit(5)

Mostra apenas as primeiras linhas.

df.count()

Conta o número total de linhas.

df.columns

Lista os nomes das colunas.

df.dtypes

Lista colunas com seus tipos de dado.

df.describe().show()

Estatísticas básicas (média, desvio, min, max) por coluna numérica.

df.summary().show()

Como describe(), mas inclui percentis (25%, 50%, 75%).

03

A Ponte para o SQL

▶
O comando que permite usar tudo que você já sabe de SQL.
df.createOrReplaceTempView("nome_tabela")

Cria view temporária consultável via %sql, válida na sessão.

df.createOrReplaceGlobalTempView("nome")

Como acima, mas acessível entre notebooks/sessões (via global_temp.nome).

spark.sql("SELECT * FROM vw_dados WHERE valor > 10")

Executa SQL puro dentro do Python e retorna um DataFrame.

04

Seleção e Filtro

▶
Escolher colunas e restringir linhas.
df.select("col1", "col2")

Equivalente a SELECT col1, col2.

df.selectExpr("col1 as c1", "col2 * 2 as dobro")

Seleciona usando expressões estilo SQL direto na string.

df.filter(df.col == "valor")
df.where("col = 'valor'")

Equivalente a WHERE.

df.filter((df.a > 1) & (df.b < 10))

Múltiplas condições: use & (AND), | (OR), ~ (NOT) com parênteses.

df.dropDuplicates() · df.distinct()

Remove linhas duplicadas.

df.sample(0.1)

Retorna uma amostra aleatória (10% das linhas nesse exemplo).

05

Manipulação de Colunas

▶
Criar, renomear, converter e remover colunas.
df.withColumn("nova", expressão)

Cria ou altera uma coluna. Muito usado no dia a dia!

ex: df.withColumn("preco_duplo", df.preco * 2)
df.withColumnRenamed("antigo", "novo")

Renomeia uma coluna.

df.drop("coluna")

Remove uma ou mais colunas.

df.withColumn("c", df.c.cast("int"))

Converte o tipo de dado de uma coluna.

df.col.alias("apelido")

Renomeia uma coluna dentro de um select (ex: df.select(df.a.alias("x"))).

06

Tratamento de Nulos

▶
Identificar e tratar valores ausentes.
df.na.drop()

Remove linhas com qualquer valor nulo.

df.na.fill(0)
df.na.fill({"col": "valor_padrao"})

Preenche nulos com um valor fixo (geral ou por coluna).

df.filter(df.col.isNull())
df.filter(df.col.isNotNull())

Filtra linhas nulas ou não-nulas de uma coluna.

from pyspark.sql.functions import coalesce
df.withColumn("c", coalesce(df.a, df.b))

Retorna o primeiro valor não-nulo entre colunas.

07

Agregações e Agrupamentos

▶
Equivalente ao GROUP BY do SQL.
df.groupBy("categoria").count()

Conta linhas por grupo.

from pyspark.sql.functions import sum, avg, max, min
df.groupBy("cat").agg(sum("valor"), avg("valor"))

Aplica múltiplas agregações de uma vez.

df.groupBy("cat").pivot("ano").sum("valor")

Transforma valores de uma coluna em novas colunas (tabela dinâmica).

df.agg({"valor": "max"})

Agregação simples sobre o DataFrame inteiro, sem agrupar.

08

Ordenação

▶
Equivalente ao ORDER BY do SQL.
df.orderBy("coluna")
df.sort("coluna")

Ordena de forma ascendente (padrão).

df.orderBy(df.coluna.desc())

Ordena de forma descendente.

09

Joins e União

▶
Combinar DataFrames por colunas ou empilhar linhas.
df1.join(df2, "chave", "inner")

Junção interna pela coluna "chave".

df1.join(df2, df1.id == df2.id, "left")

Left join com condição explícita entre colunas diferentes.

"inner" · "left" · "right" · "full" · "left_anti"

Tipos de join disponíveis (left_anti retorna só quem NÃO tem match).

df1.union(df2)

Empilha linhas de dois DataFrames com mesma ordem de colunas.

df1.unionByName(df2)

Empilha por nome de coluna, mesmo em ordem diferente.

10

Funções de Coluna pyspark.sql.functions

▶
O "kit de ferramentas" para criar expressões dentro de select/withColumn.
from pyspark.sql.functions import col, lit

col() referencia uma coluna; lit() cria um valor literal fixo.

from pyspark.sql.functions import when
when(df.nota >= 7, "aprovado").otherwise("reprovado")

Equivalente ao CASE WHEN do SQL.

from pyspark.sql.functions import concat, concat_ws
concat_ws(" ", df.nome, df.sobrenome)

Concatena colunas de texto (concat_ws já insere um separador).

from pyspark.sql.functions import split
split(df.texto, ",")

Divide uma string em array a partir de um delimitador.

from pyspark.sql.functions import regexp_replace
regexp_replace(df.texto, "[0-9]", "")

Substitui texto via expressão regular.

from pyspark.sql.functions import upper, lower, trim

Maiúsculas, minúsculas e remoção de espaços em branco.

11

Datas e Horários

▶
Funções mais usadas para trabalhar com colunas de data.
from pyspark.sql.functions import current_date, current_timestamp

Retorna a data/hora atual.

from pyspark.sql.functions import to_date, to_timestamp
to_date(df.texto, "yyyy-MM-dd")

Converte texto em data/timestamp.

from pyspark.sql.functions import date_format
date_format(df.data, "dd/MM/yyyy")

Formata uma data como texto.

from pyspark.sql.functions import datediff, months_between
datediff(df.data_fim, df.data_ini)

Diferença entre datas em dias ou meses.

from pyspark.sql.functions import year, month, dayofmonth

Extrai partes específicas de uma data.

12

Window Functions

▶
Cálculos "por grupo" sem colapsar as linhas — rankings, acumulados, comparação com linha anterior.
from pyspark.sql.window import Window
w = Window.partitionBy("categoria").orderBy("data")

Define a "janela": como particionar e ordenar os dados.

from pyspark.sql.functions import row_number
df.withColumn("rn", row_number().over(w))

Numera as linhas dentro de cada partição.

from pyspark.sql.functions import rank, dense_rank
rank().over(w)

Cria ranking (com ou sem "buracos" na numeração de empates).

from pyspark.sql.functions import lag, lead
lag(df.valor, 1).over(w)

Traz o valor da linha anterior (lag) ou seguinte (lead).

13

Escrita de Dados df.write

▶
Gravar os resultados de forma permanente.
df.write.format("delta").mode("append").saveAsTable("catalog.schema.tabela")

Adiciona novas linhas ao final de uma tabela existente.

df.write.format("delta").mode("overwrite").saveAsTable("catalog.schema.tabela")

Substitui todo o conteúdo da tabela.

df.write.partitionBy("ano", "mes").saveAsTable("tabela")

Particiona fisicamente os dados por colunas (melhora performance de leitura).

df.write.mode("overwrite").option("mergeSchema", "true").saveAsTable("tabela")

Permite que o schema da tabela evolua junto com novas colunas.

14

Performance

▶
Comandos para acelerar processamentos pesados ou repetidos.
df.cache()

Mantém o DataFrame em memória para reuso rápido em várias operações.

df.persist()

Como cache(), mas com controle do nível de armazenamento (memória/disco).

df.repartition(8)

Aumenta/redistribui o número de partições (mais paralelismo).

df.coalesce(1)

Reduz o número de partições — útil antes de salvar um único arquivo.

df.explain()

Mostra o plano de execução — útil para diagnosticar lentidão.

O pipeline típico

Essa sequência é 90% do seu dia a dia

Ler → inspecionar na zona de conforto SQL → ajustar em Python → salvar.

# 1. Ler os dados
df = spark.read.csv("/Volumes/path/dados.csv", header=True, inferSchema=True)

# 2. Criar a view SQL para trabalhar na sua zona de conforto
df.createOrReplaceTempView("vw_dados")

# 3. (Opcional) Ajuste rápido em Python
df_limpo = df.withColumnRenamed("nome_antigo", "nome_novo").dropDuplicates()

# 4. Salvar o resultado final em uma tabela definitiva
df_limpo.write.format("delta").mode("overwrite").saveAsTable("prod.meu_schema.minha_tabela")
Databricks · PySpark cheat sheet