Paulo Henrique
3 min readFeb 18, 2022

Já precisou daquela colinha na hora de começar a manipular o seu DataFrame em PySpark ?

Antes de mais nada, aqui vai uma breve explicação sobre o que é o PySpark.

É uma API Python para Apache SPARK que é denominado como o mecanismo de processamento de dados distribuídos, na memória, permitindo o processamento de dados de forma mais eficiente e de característica distribuída.

Com o uso do PySpark, é possível o processamento de dados em Hadoop (HDFS) e entre outros sistemas de arquivos.

Aqui vou falar de alguns comandos que me ajudaram no meu inicio com PySpark, e eles são bem parecidos com a sintaxe SQL.

Para os exemplos abaixo iremos usar o seguinte DataFrame:

emp = [
(1,"Smith","2018","M",3000), \
(2,"Rose","2010","M",4000), \
(3,"Williams","2010","M",1000), \
(4,"Jones","2005","F",2000)
]
columns = ["emp_id","name","year_joined","gender","salary"]empDF = spark.createDataFrame(data=emp, schema = columns)

Select

Se um dos nomes de coluna for ‘ * ’, essa coluna será expandida para incluir todas as colunas no DataFrame atual.

exemplo:

ou

Where

Filtra linhas usando a condição fornecida.

exemplo:

groupBy

Faz a agregação usando as colunas especificadas.

exemplo:

display(empDF.groupBy(‘year_joined’).count())

Join — inner, left, right

Para fazer os joins é necessário criar mais um DataFrame.

func = [
(1,"Dev Front-end"), \
(2,"Dev Back-end"), \
(5,"BI")
]
columns = ["emp_id","job"]
funcDF = spark.createDataFrame(data=func, schema = columns)

exemplo (para fazer os outros tipos de join basta apenas alterar o inner para left ou right)

Mas queria deixar aqui um exemplo de join que me ajudou a não dar uma volta gigantesca, o left_anti. (também serve para o right_anti)

quando você junta dois DataFrames usando left anti, ele retorna apenas colunas do DataFrame esquerdo e registros não correspondentes.

withColumnRenamed

Retorna um novo DataFrame renomeando uma coluna existente.
Parâmetros:
existente — nome da coluna existente a ser renomeada.
col — novo nome da coluna.

display(empDF.withColumnRenamed(‘name’,’nome’))

withColumn + concat + lit + col

Aqui foi necessário importar a biblioteca functions onde ela foi apelidada como ‘f’.

o withColumn retorna um novo DataFrame adicionando uma coluna ou substituindo a coluna existente que tem o mesmo nome.
o
concat concatena várias colunas de string de entrada juntas em uma única coluna de string.
o
lit cria uma coluna de valor literal.
o
col retorna uma coluna com base no nome de coluna fornecido.

import pyspark.sql.functions as f

display(empDF \
.withColumn(‘nome_concatenado’, \
f.concat(f.lit(‘nome ‘),f.col(‘name’))))

Espero que possa te ajudar assim como me ajudou.

Duvidas ou alguma coisa errada por favor me envie uma mensagem no LinkedIn.