/Spark

Projeto que utiliza Spark e Programação Funcional para uma classificação Naive-Bayes.

Primary LanguageJupyter Notebook

Introdução

Neste projeto vamos construir um classificador Naive-Bayes para determinar o sentimento de um comentário.

Instalando o ambiente

O jeito mais simples de começar a trabalhar com Spark é instalar um container com tudo pronto! No site https://hub.docker.com/r/jupyter/pyspark-notebook vemos uma imagem Docker que já vem com pyspark e jupyter lab. Instale a imagem com o comando:

docker pull jupyter/pyspark-notebook

Vamos iniciar o ambiente de trabalho com o comando docker run. Para isso precisamos tomar alguns cuidados:

  1. Temos que mapear nosso diretorio local de trabalho para um diretório interno do container, de modo que alterações feitas dentro do container (nesta pasta escolhida) sejam gravadas no nosso diretorio local. No container temos um usuário padrão com username jovyan. No homedir desse usuario temos uma pasta vazia work, que vai servir como local de mapeamento do nosso diretorio local de trabalho. Podemos então fazer esse mapeamendo com a opção -v do comando docker run da seguinte forma:
-v <diretorio>:/home/jovyan/work

onde <diretorio> representa seu diretorio local de trabalho.

  1. Para acessar o jupyter notebook e o dashboard do Spark a partir do nosso browser favorito temos que abrir algumas portas do container com a opção -p. As portas são 8888 (para o próprio jupyter notebook) e 4040 (para o dashboard do Spark). Ou seja, adicionaremos às opções do docker runo seguinte:
-p 8888:8888 -p 4040:4040

Desta forma, ao acessar localhost:8888 na nossa máquina, estaremos acessando o servidor Jupyter na porta 8888 interna do container.

  1. Vamos iniciar o container no modo interativo, e vamos especificar que o container deve ser encerrado ao fechar o servidor Jupyter. Faremos isso com as opções -it e -rm

Portanto, o comando completo que eu uso na minha máquina Linux para iniciar o container é:

docker run \
    -it \
    --rm \
    -p 8888:8888 \
    -p 4040:4040 \
    -v "`pwd`":/home/jovyan/work \
    jupyter/pyspark-notebook

Para facilitar a vida eu coloco esse comando em um arquivo inicia.sh. Engenheiros, façam do jeito que preferirem!

Agora abra esse notebook lá no container!

Iniciando o Spark

Vamos iniciar o ambiente Spark. Para isso vamos:

  1. Criar um objeto de configuração do ambiente Spark. Nossa configuração será simples: vamos especificar que o nome da nossa aplicação Spark é "Minha aplicação", e que o master node é a máquina local, usando todos os cores disponíveis. Aplicações reais de Spark são configuradas de modo ligeiramente diferente: ao especificar o master node passamos uma URL real, com o endereço do nó gerente do cluster Spark.

  2. Vamos criar um objeto do tipo SparkContext com essa configuração