Configurando o Apache Spark no PyCharm

Configurando o Apache Spark no PyCharm

2018, Oct 05    

Olá pessoal, hoje compartilho como consegui configurar o Apache Spark no PyCharm, para tirar proveito de todas as facilidades que a IDE nos trás.

Nesta postagem estou utilizando o PyCharm 2018.2 e o Apache Spark 2.3.1, porém, creio que as mesmas instruções funcionam com versões 2.x anteriores.

[UPDATE] No fim do artigo explico como instalar o pyspark utilizando o miniconda sem maiores complicações.

Criando o projeto demonstrativo

Criaremos um projeto demonstrativo chamado spark-pycharm.leobiscassi.github.io para realizarmos o passo-a-passo de configuração do Apache Spark no PyCharm; estou assumindo que o leitor já possui o Conda, Apache Spark e o PyCharm instalados.

Na tela inicial do PyCharm clicaremos em Create New Project, conforme podemos observar na imagem abaixo.

Imagem 1 - Criando um novo projeto

Posteriormente, selecionaremos a opção Pure Python, informando o caminho do projeto no campo location; clicando na opção Project Interpreter selecionaremos a opção New Environment using com a opção Conda, caso a IDE não identifique automaticamente a pasta onde o Conda foi instalado, informe-a no campo Conda Executable, após isso informe o caminho do novo ambiente a ser criado no campo Location, a versão do python a ser utilizada é a 3.6.

Você pode conferir um exemplo de como a tela deve aparentar na imagem abaixo.

Imagem 2 - Configurando um novo projeto

O PyCharm reconhece comandos do Spark por padrão?

Adicione o arquivo exemplo-spark-pycharm.py ao projeto criado no passo anterior. O exemplo disponibilizado no guia de programação Spark SQL, DataFrames and Datasets Guide será o que iremos utilizar para realizarmos os testes em nossas configurações.

Adicione o código a seguir no arquivo criado anteriormente.

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("Python Spark SQL basic example").getOrCreate()

df = spark.read.json("$SPARK_HOME/examples/src/main/resources/people.json")
df.show()

df.createOrReplaceTempView("people")

sqlDF = spark.sql("SELECT * FROM people")
sqlDF.show()

O trecho $SPARK_HOME deve ser substituído pelo local de instalação do Spark em sua máquina.

Podemos observar que o PyCharm acusa alguns erros no código acima, quando tentamos executá-lo não é diferente, como podemos ver abaixo.

Imagem 3 - Erros ao rodar projeto pela primeira vez

Como Resolvemos este problema?

As mensagens de erro são retornadas pela IDE porque ela não consegue encontrar o Spark em nosso ambiente de desenvolvimento, apesar de ele estar instalado e configurado na máquina. Para resolvermos este problema, dentro da IDE, acionaremos o menu File -> Settings -> Project: spark-pycharm.leobiscassi.github.io -> Project Structure; na tela selecionada clique no botão Add Content Root, navegue até a pasta onde o Spark está instalado ($SPARK_HOME) e selecione todos os arquivos .zip presentes em $SPARK_HOME/python/lib, conforme podemos observar na imagem abaixo, após isso clique no botão OK.

Imagem 4 - Tela de configuração

Após referenciarmos o Spark em nosso ambiente de desenvolvimento necessitaremos criar mais uma configuração para a execução do código; para isso acione o menu Run -> Edit Configurations, clique no botão adicionar no canto superior esquerdo da tela e selecione python. Na tela que é apresentada após realizar essa operação incluiremos o nome da configuração de execução no campo Name, apontaremos o caminho do arquivo que criamos no projeto, o exemplo-spark-pycharm.py, no campo Script path.

Depois de realizarmos os passos acima, será necessário incluirmos duas variáveis de ambiente em nossa configuração de execução, para isso acionaremos o botão do campo Environment Variables e adicionaremos as variáveis de ambiente a seguir:

Nome da variável Valor *
PYSPARK_PYTHON python3
SPARK_HOME /usr/local/spark/

É importante observar que o valor informado para a variável SPARK_HOME deve ser o local em que o Spark está instalado em sua máquina, o valor apresentado na tabela acima é onde o mesmo está instalado em meu ambiente.

Após realizarmos essas operações, confirmamos as alterações e estamos prontos para executar nosso código pela primeira vez, bastando acionarmos o atalho Ctrl + Alt + F10 ou o menu Run -> Run…, após isso vamos selecionar a configuração de execução que acabamos de criar e executar o código. O console deve apresentar o output de dois DataFrames, como podemos observar na imagem abaixo.

Imagem 4 - Tela do console

Pronto, você configurou e está pronto para utilizar o Spark junto com o PyCharm! :tada: :tada: :tada:

[UPDATE] Instalando PySpark pelo Conda

Recentemente realizei a instalação do PySpark pelo miniconda e ele já fez todo o trabalho pra mim, inclusive eliminando até a necessidade de configurar o perfil de execução no PyCharm, facilitando e MUITO a vida.

Para realizar a instalação desse modo basta simplesmente ativar seu ambiente virtual e rodar o comando abaixo:

$ conda install pyspark

Antes de finalizarmos …

Após a configuração da IDE pode ser que você tenha necessidade de utilizar algum pacote disponibilizado pelo spark packages, caso isso seja necessário é só incluir a instrução .config("spark.jars.packages", "nome_do_pacote") que o pacote será baixado automaticamente.

Abaixo segue um exemplo de como utilizar o driver do banco de dados Cassandra disponibilizado pela DataStax conectando em um base local.

spark = SparkSession.builder\
                        .appName(appName)\
                        .config("spark.jars.packages", "com.datastax.spark:spark-cassandra-connector_2.11:2.3.2")\
                        .config("spark.cassandra.connection.host", "127.0.0.1")\
                        .getOrCreate()

Por hoje é só, espero que tenham gostado!

Grande abraço!