Usando o Apache Zeppelin

Nas grandes empresas é comum a utilização de diversos softwares que usam diferentes tipos de bancos de dados e há um desafio de você analisar esses dados em uma única ferramenta.

Conheci recentemente uma ferramenta open source chamada Apache Zeppelin  que oferece uma camada que interpreta várias sintaxes como SQL, Scala, Cassandra e entre outros, além disso te permite criar visualização de dados rapidamente através dos resultados obtidos pelos interpretadores, compartilhá-los e estudá-los de forma colaborativa. Se você já usou o Kibana para visualização de dados para o ElasticSearch ou bancos NoSQL, o Zeppelin vai muito além disso.

Recomendo o vídeo abaixo para conhecer a motivação e história da ferramenta contada pelo criador, Moon Soo Lee.

Instalação

Neste post vamos instalar a versão 0.6.0 no Ubuntu 14.04 LTS.

JDK 8

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Vamos adicionar o JAVA_HOME em suas variáveis de ambiente…

sudo nano /etc/environment

Acrescente no arquivo “environment” a linha abaixo no final do arquivo

JAVA_HOME="/usr/lib/jvm/java-8-oracle"

Atualize suas variáveis

source /etc/environment

Confirme a instalação e adição da variável

echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle

mysql-connector-java

Como vamos acessar um banco mysql o Zeppelin necessita do driver com.mysql.jdbc.Driver para conexão.

sudo apt-get install libmysql-java
export CLASSPATH=$CLASSPATH:/usr/share/java/mysql-connector-java.jar

Zeppelin

wget http://ftp.unicamp.br/pub/apache/zeppelin/zeppelin-0.6.0/zeppelin-0.6.0-bin-all.tgz
tar -xvzf zeppelin-0.6.0-bin-all.tgz

Inicialização do Zeppelin

Após o download e descompactação,  acesse a pasta bin e …

cd zeppelin-0.6.0-bin-all/bin
./zeppelin-daemon.sh start

start-zeppelin

Pronto, você já pode acessar por http://localhost:8080

Criando o interpreter mysql

Por padrão, o Zeppelin já vem configurado com vários tipos de interpretadores (Hive, Cassandra, Postgres, Spark e etc), mas não tem configuração para MySQL. Neste exemplo vamos criar um interpretador JDBC que acesse um banco de dados MySQL e configurá-lo com os dados de conexão ao banco.

Acesse a página dos Interpretadores:

Menu-interpreter

Depois clique no botão de “Create”:

Create-interpreter

Aparecerá vários campos para você preencher, você pode remover no botão de “X” todos os que estão abaixo do “zeppelin.jdbc.concurrent.max_connection”, em seguida inclua as informações respectivas:

  • default.url: jdbc:mysql://[SEU-HOST]:3306
  • default.user: [USUÁRIO-BANCO]
  • default.password: [SENHA-BANCO]
  • default.driver: com.mysql.jdbc.Driver

mysql-interpreter

Após incluir os parâmetros é necessário adicionar ao Maven o caminho do driver JDBC para o classpath do Zeppelin, isto é feito incluindo na parte debaixo das configurações em “Dependencies”. Coloque em “artifact” a seguinte configuração: mysql:mysql-connector-java:[versão-mysql-connector]. Exemplo: mysql:mysql-connector-java:5.1.28

jdbc-interpreter

Segue abaixo como ficou minha configuração.

zeppelin interpreter-3

 

Feito isso você está pronto para fazer queries e transformar o resultado em gráficos.

Visualização dos dados

Crie um Notebook, será nele que irá conter seu conjunto de queries/gráficos para análise.

notebook

Criei um Notebook chamado “Teste”, em seguida precisamos definir quais interpretadores vamos usar em nosso notebook, neste exemplo usaremos o “md” (MarkDown) e o “jdbc” que configuramos anteriormente. Para fazer isso, clique no ícone da engrenagem no canto superior esquerdo. Aparecerá vários interpretadores habilitados para o nosso notebook, vamos desabilitar todos, clicando neles, exceto os que foram supracitados.

notebook 2BT8HVH1A

O notebook é composto por parágrafos (é uma analogia a um caderno de anotações, por isso o nome de notebooks). Cada parágrafo é um box do notebook que poderá receber qualquer tipo de script pré-definido nos interpretadores (em nosso caso, md e jdbc).

Abaixo estou usando o JDBC e destaquei dois pontos. O primeiro ponto que qualquer script tem que ser iniciado como “%[interpreter]”, assim, o que vier depois, o Zeppelin entenderá a sintaxe respectiva e o que será feito de acordo com as configurações. Como o %jdbc está associado a nossa configuração do banco MySQL ele entenderá a sintaxe SQL, conectará ao banco, vai recuperar os dados e nos entregar.

O segundo ponto, para executar o script no parágrafo você pode clicar no “play” ou apertar o atalho SHIFT+ENTER. Toda execução é realizada por um background job. Na versão 0.7.0 está previsto uma feature que vamos acompanhar, parar ou abortar cada job.

jdbc   notebook 2BT8HVH1A

Como ficou o resultado final usando os dois interpretadores que escolhemos.

final notebook 2BT8HVH1A

Cada parágrafo tem seu ID e suas propriedades específicas que te permitem reduzir a largura do box, incluir um título, mudar sua posição no notebook, criar um link para compartilhar o gráfico/resultado com outras pessoas. Você acessa clicando no ícone da engrenagem.

config-notebook 2BT8HVH1A

 

 

Isto é só um pouco do que a ferramenta é capaz de oferecer, existe também:

É uma ferramente bastante promissora e recomendo testá-la.

Qualquer dúvida é só comentar 🙂

Mergulhando na ferramenta

Conheça outras formas de notebooks nesse repositório: https://www.zeppelinhub.com/viewer

Fontes

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s