Criação de colunas
Neste capítulo, você aprenderá a usar os métodos definidos pela classe DataFrame
do Spark para realizar operações de dados comuns.
Vamos dar uma olhada na execução de operações por coluna. No Spark, você pode fazer isso usando o método .withColumn()
, que recebe dois argumentos. Primeiro, uma string com o nome da nova coluna e, segundo, a nova coluna em si.
A nova coluna deve ser um objeto da classe Column
. Para criar um, basta extrair uma coluna do DataFrame usando df.colName
.
Atualizar um Spark DataFrame é um pouco diferente de trabalhar no pandas
porque o DataFrame do Spark é imutável. Isso significa que ele não pode ser alterado e, portanto, as colunas não podem ser atualizadas no local.
Assim, todos esses métodos retornam um novo DataFrame. Para substituir o DataFrame original, você deve reatribuir o DataFrame retornado usando o método da seguinte forma:
df = df.withColumn("newCol", df.oldCol + 1)
O código acima cria um DataFrame com as mesmas colunas de df
mais uma nova coluna, newCol
, em que cada entrada é igual à entrada correspondente de oldCol
, mais uma.
Para substituir uma coluna existente, basta passar o nome da coluna como primeiro argumento!
Lembre-se de que uma SparkSession
chamada spark
já está em seu espaço de trabalho.
Este exercício faz parte do curso
Introdução ao PySpark
Instruções do exercício
- Use o método
spark.table()
com o argumento"flights"
para criar um DataFrame que contenha os valores da tabelaflights
no.catalog
. Salve-o comoflights
. - Mostre o cabeçalho de
flights
usandoflights.show()
. Verifique o resultado: a colunaair_time
contém a duração do voo em minutos. - Atualize
flights
para incluir uma nova coluna chamadaduration_hrs
, que contém a duração de cada voo em horas (você precisa dividirair_time
pelo número de minutos em uma hora).
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Create the DataFrame flights
flights = spark.table(____)
# Show the head
____.____()
# Add duration_hrs
flights = flights.withColumn(____)