Programação em Python e PySpark

Patty Vader
Data Team Stone
Published in
3 min readMar 26, 2021

Codificando aplicações Spark usando Python

Não podemos negar que o Python é a linguagem de programação mais usada na construção de pipelines de dados. Aqui na Stone, na BU de Produtos Financeiros, adotamos Python para criarmos toda a nossa infraestrutura de dados. Claro, que outras linguagens são bem vindas!

Por que usar Python? É uma linguagem clean, fácil de programar e com uma comunidade gigante, e tudo isso facilita a sua adoção. E como consequência fica muito mais fácil utilizar ferramentas codificadas em Python.

Neste post, contamos um pouquinho sobre como usamos Python e Pyspark para codificar aplicações Spark aqui na Stone.

1. O que é Spark?

Spark é um framework utilizado para processar grandes quantidades de dados, sendo nos dias atuais, o queridinho dos Engenheiros de Dados para desenvolver data pipelines robustas para Big Data.

Inicialmente foi desenvolvido pela Universidade da Califórnia, mas foi doado a Fundação Apache que hoje é responsável pela manutenção da ferramenta. Possui código livre e acessível via github do Projeto.

Podemos considerar o Spark como uma plataforma de computação em cluster com paralelismo, ou seja, os dados são distribuídos entre os clusters para processá-los de maneira paralela.

O Spark é escrito em Scala e executado em uma JVM (Java Virtual Machine). Atualmente podemos escrever aplicações Spark em R, Python, Java e Scala. Então se o Spark é escrito em Scala como podemos acessar as funcionalidades desse framework usando Python? É muito simples: usando o PySpark.

2. O que é PySpark?

Segundo a própria documentação do projeto, Pyspark é uma interface, escrita em Python, para o Apache Spark.

Permite escrever aplicações Spark utilizando APIs Python que interagem com o core do Spark. Em resumo: é uma forma fácil de se comunicar com o Spark utilizando Python!

As famosas RDDs

Poderíamos dizer que as RDDs (Resilient Distributed Datasets) são o core do Spark. Elas são estruturas de dados responsáveis basicamente pela transformação e distribuição dos dados através de múltiplos nodes. Usando Pyspark podemos facilmente trabalhar com essas estruturas. Vejamos o exemplo abaixo:

from pyspark.sql import SparkSessionspark = SparkSession 
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()
data = [1, 2, 3, 4, 5]
distData = spark.sparkContext.parallelize(data)

Primeiramente criamos uma nova SparkSession, e criamos uma RDD a partir de uma coleção de elementos inteiros, invocando para isso, a função parallelize( ). Esses elementos formam um dataset de dados distribuídos, o que facilita o seu processamento, pois poderá ser processado de forma paralela.

3. Vantagens e desvantagens do PySpark

Quando falamos em alguma ferramenta sempre é bom lembrar quais são as vantagens e desvantagens em utilizá-la, e com Pyspark não seria diferente. Vamos lá!

Vantagens:

  • Fácil de utilizar.
  • A curva de aprendizado é muito baixa.
  • Possui grande quantidade de libs.
  • Mais performático que o Pandas se usado com grandes quantidades de dados.

Desvantagens:

  • Não pode utilizar funções internas do Spark.
  • Mais lento do que Scala.

4. Onde usamos Pyspark?

Falar em pipeline e dados e não citar Spark seria bem difícil. Aqui, na Stone, também usamos Spark, e criamos uma arquitetura de dados usando Spark e Kubernetes.

Para enviar jobs para o nosso cluster Kubernetes preferimos escrever scripts Python utilizando PySpark por sua facilidade de comunicação com o Spark, e claro, por ser escrito em Python.

Em resumo: respiramos Python e Pyspark por aqui!

E o que acha de viver isso com a gente? Vem conferir nossa vaga aberta:
Machine Learning Engineer

--

--