Um engenheiro de dados inevitavelmente enfrentará o processo de ETL ou ELT em algum momento, no qual uma das linguagens usuais é o Python. Para simplificar o uso dessa linguagem, foi criado o PySpark, um framework muito popular.
No entanto, no início da carreira de um engenheiro de dados, esse framework pode ser um pouco confuso. Neste artigo, discutiremos o que é o PySpark, suas vantagens e usos, para ajudar a compreender melhor essa ferramenta.
O que é o PySpark?
O PySpark é uma API Python para Apache Spark, denominado como o mecanismo de processamento analítico para aplicações de processamento de dados distribuídos em larga escala e aprendizado de máquina. Ele oferece escalabilidade ao distribuir tarefas em vários nós de um cluster para processamento em paralelo, permitindo processar grandes conjuntos de dados. É uma das principais bibliotecas para processamento de Big Data e Machine Learning.
O que isso quer dizer? Enquanto a linguagem python ocorre em processamento sequencial, que seria execuções uma após a outra, no pyspark com ajuda dos clusters (conjuntos de computadores conectados que trabalham em conjunto para processar grandes conjuntos de dados), esse processamento é feito de forma mais eficiente.
Quais suas vantagens?
Como citado anteriormente, o PySpark consegue através dos clusters, fazer um processamento paralelo e assim conseguir ser mais eficiente e rápido, porém existem outras coisas que fazem o PySpark ser uma ferramente tão útil no nosso dia a dia, são elas:
• Com o uso do PySpark, é possível o processamento de dados em Hadoop (HDFS), AWS S3 e outros sistemas de arquivos.
• Possui bibliotecas de aprendizado de máquina e gráficos.
• Geralmente as aplicações criadas e executadas no PySpark são 100x mais rápidas que outras em sistemas de dados conhecidos.
• Apesar de ser conhecida pela linguagem Python, PySpark suporta outras linguagens além do Python, como Java, Scala e R.
• Ferramenta open source, o que significa que é totalmente gratuita para uso comercial e não comercial.
• Pode ser facilmente integrado com outras ferramentas, como o Pandas e o Scikit-learn, permitindo a construção de pipelines de Machine Learning mais complexos.
E o seu uso?
Agora que comentamos um pouco sobre o PySpark, fica aquela dúvida, como podemos fazer o uso desse framework e aqui vamos desde a configuração até alguns casos de uso.
Caso não tenha ainda instalado em sua máquina ou ambiente, usando o comando pip, faça a instalação do framework
!pip install pyspark
Para dar início ao uso, temos que fazer a importação e iniciar a sessão no Spark
from pyspark.sql import SparkSession
Spark = SparkSession.builder.appName('DataFrame').getOrCreate()
Após isso podemos fazer a leitura de uma base dados junto com seus parâmetros header dizendo que possuem um cabeçalho com suas informações e inferSchema para criar um schema para a tabela lida
daados = Spark.read.csv('dados_spark.csv', header=True, inferSchema=True)
dados.printSchema()
root
|-- idade: integer (nullable = true)
|-- nome: string (nullable = true)
|-- cidade: string (nullable = true)
|-- salario: integer (nullable = true)
Para confirmar os dados que foram lidos, podemos utilizar o .show() para mostrar o dataframe e com o parâmetro n delimitamos as 10 primeiras linhas
dados.show(n=10)
+-----+--------+--------------+-------+
|idade| nome| cidade|salario|
+-----+--------+--------------+-------+
| 30| João| São Paulo| 5000|
| 25| Maria|Rio de Janeiro| 4500|
| 40| Ana|Belo Horizonte| 7000|
| 27| Carlos| Brasília| 5500|
| 35| Juliana| São Paulo| 8000|
| 28|Fernanda| Porto Alegre| 6000|
| 33| Pedro| Curitiba| 5500|
| 29| Luciana| Florianópolis| 7500|
| 26| Gustavo| São Paulo| 4000|
| 37| Mariana|Belo Horizonte| 9000|
+-----+--------+--------------+-------+
Pode ser feita também a seleção de colunas especificas com o comando .select()
dados.select(['nome', 'cidade']).show(n=10)
+--------+--------------+
| nome| cidade|
+--------+--------------+
| João| São Paulo|
| Maria|Rio de Janeiro|
| Ana|Belo Horizonte|
| Carlos| Brasília|
| Juliana| São Paulo|
|Fernanda| Porto Alegre|
| Pedro| Curitiba|
| Luciana| Florianópolis|
| Gustavo| São Paulo|
| Mariana|Belo Horizonte|
+--------+--------------+
Para criar uma nova coluna, por exemplo, aumento com 10% a mais na coluna salário pode ser feita o uso do withColumn() que cria uma nova
dados = dados.withColumn('aumento', dados['salario'] * 1.1)
dados.show(n=10)
+--------+--------------+------+----------+-------+
| nome| cidade|idade| salario|aumento|
+--------+--------------+------+----------+-------+
| João| São Paulo| 30| 4000.0|4400.00|
| Maria|Rio de Janeiro| 25| 3500.0|3850.00|
| Ana|Belo Horizonte| 35| 6000.0|6600.00|
| Carlos| Brasília| 27| 4200.0|4620.00|
| Juliana| São Paulo| 29| 3700.0|4070.00|
|Fernanda| Porto Alegre| 31| 4800.0|5280.00|
| Pedro| Curitiba| 24| 3200.0|3520.00|
| Luciana| Florianópolis| 26| 3900.0|4290.00|
| Gustavo| São Paulo| 28| 4500.0|4950.00|
| Mariana|Belo Horizonte| 30| 5500.0|6050.00|
+--------+--------------+------+----------+-------+
Para excluirmos uma coluna podemos fazer o famoso .drop()
dados = dados.drop('aumento')
dados.show(n=10)
+--------+--------------+------+----------+
| nome| cidade|idade| salario|
+--------+--------------+------+----------+
| João| São Paulo| 30| 4000.0|
| Maria|Rio de Janeiro| 25| 3500.0|
| Ana|Belo Horizonte| 35| 6000.0|
| Carlos| Brasília| 27| 4200.0|
| Juliana| São Paulo| 29| 3700.0|
|Fernanda| Porto Alegre| 31| 4800.0|
| Pedro| Curitiba| 24| 3200.0|
| Luciana| Florianópolis| 26| 3900.0|
| Gustavo| São Paulo| 28| 4500.0|
| Mariana|Belo Horizonte| 30| 5500.0|
+--------+--------------+------+----------+
Conclusão
Poderia trazer infinitos exemplos, mas o objetivo desse artigo foi mostrar a importância do PysSpark no dia a dia e mostrar algumas formas de utilizar ele, que terá ajuda do processamento paralelo.
Como também vimos que é uma ferramenta poderosa para processamento de dados em larga escala e aprendizado de máquina. Ele apresenta diversas vantagens, como a facilidade de programação em Python, o suporte a múltiplas fontes de dados, a capacidade de processamento distribuído e a escalabilidade horizontal. Com o PySpark, é possível realizar análises e extrações de informações em grandes volumes de dados com mais eficiência e agilidade. Além disso, com o uso do PySpark em conjunto com outras bibliotecas e ferramentas, é possível construir soluções completas de processamento e análise de dados.