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.
Referencia
https://databricks.com/glossary/pyspark
Esse site também ajudou bastante
https://sparkbyexamples.com/spark/sparksession-explained-with-examples/