Como ler um ficheiro CSV para um DataFrame no Databricks
Ler um ficheiro CSV para um DataFrame é o primeiro passo de quase todos os trabalhos de dados no Databricks. Depois de os dados estarem num DataFrame, pode filtrá-los, transformá-los e guardá-los em tabelas Delta. O formato CSV continua a ser uma das formas mais usadas para trocar dados, por isso importá-lo corretamente evita muitos problemas mais à frente. Este guia mostra, de forma simples e reproduzível, como carregar um CSV e lê-lo com PySpark, mesmo que esteja a dar os primeiros passos na plataforma.
Pré-requisitos
- Acesso a um workspace do Databricks com permissão para executar um notebook.
- Um cluster ligado ao notebook (com o estado running).
- Um ficheiro CSV para carregar, por exemplo
vendas.csv, com os nomes das colunas na primeira linha.
Passo 1: Carregar o ficheiro para o Databricks
Antes de ler o ficheiro, ele tem de estar acessível ao cluster. A forma mais simples é pela interface: no menu lateral, abra Catalog e carregue o CSV para um volume do Unity Catalog. O ficheiro fica disponível num caminho como /Volumes/main/default/dados/vendas.csv. Em workspaces mais antigos pode usar o DBFS, com um caminho do tipo /FileStore/tables/vendas.csv. Pode arrastar o ficheiro para a janela de carregamento ou escolhê-lo a partir do computador; guarde o caminho apresentado, porque vai precisar dele no passo da leitura.
Passo 2: Criar um notebook
Crie um notebook novo e associe-o ao cluster. Defina a linguagem predefinida como Python. Vai usar a variável spark, que já existe em qualquer notebook do Databricks e representa a sessão Spark ativa — não precisa de a criar.
Passo 3: Ler o CSV para um DataFrame
Use spark.read com duas opções importantes: header, para tratar a primeira linha como nomes de colunas, e inferSchema, para o Spark deduzir automaticamente os tipos de dados (números, datas e texto):
df = (spark.read
.format("csv")
.option("header", "true")
.option("inferSchema", "true")
.load("/Volumes/main/default/dados/vendas.csv"))
Existe também uma forma mais curta, com exatamente o mesmo resultado. Guardar o resultado numa variável chamada df é apenas uma convenção; pode usar qualquer nome:
df = spark.read.csv(
"/Volumes/main/default/dados/vendas.csv",
header=True, inferSchema=True)
Dica: a opção inferSchema obriga o Spark a ler o ficheiro duas vezes. Para ficheiros muito grandes, definir o esquema à mão é mais rápido.
Passo 4: Ver os dados e confirmar os tipos
Para inspecionar o conteúdo numa tabela interativa, use display. Para ver a estrutura das colunas e os tipos que o Spark deduziu, use printSchema:
display(df)
df.printSchema()
Se um valor numérico tiver sido lido como texto, o problema costuma ser o separador. Muitos ficheiros em português usam ponto e vírgula em vez de vírgula; nesse caso, acrescente .option("sep", ";") à leitura.
Passo 5: Guardar o DataFrame numa tabela Delta (opcional)
Se quiser reutilizar os dados noutros notebooks ou consultá-los em SQL, guarde o DataFrame como uma tabela gerida em formato Delta. Assim, os dados ficam versionados e disponíveis para toda a equipa:
df.write.format("delta").saveAsTable("vendas")
A partir desse momento, pode consultar a tabela numa célula SQL com uma instrução SELECT sobre a tabela vendas.
Verificar o resultado
Confirme que os dados foram lidos como esperava. A função df.count() devolve o número de linhas e df.show(5) mostra as primeiras cinco:
print(df.count())
df.show(5)
Compare o número de linhas com o tamanho do ficheiro original; se forem muito diferentes, pode haver linhas mal formatadas ou um separador errado. Se o total de linhas for zero, ou se os nomes das colunas aparecerem como _c0 e _c1, reveja o caminho do ficheiro e confirme que a opção header está ativa.
Conclusão
Já tem um ficheiro CSV transformado num DataFrame pronto a usar e, se quiser, guardado numa tabela Delta consultável em SQL. A partir daqui pode tratar valores em falta, converter tipos ou juntar outras tabelas para a sua análise. Qual vai ser a primeira pergunta que vai fazer a estes dados?