- APACHE SPARK 2.3.x
- ETL - Projeto PYSPARK 2.3.x
- ETL - JUPYTER NOTEBOOK
- DOCKER
- HIVE
Abril 2019
Fonte oficial do dateset : NASA
Dados:
- Jul 01 to Jul 31, ASCII format, 20.7 MB gzip compressed , 205.2 MB. ftp
- Aug 04 to Aug 31, ASCII format, 21.8 MB gzip compressed , 167.8 MB. ftp
O arquivos acima deverão estar descompactados na pasta: etl_pyspark/dados/mock/nasa
O processo irá fazer a leitura de todos os arquivos que estão no mesmo padrão dentro da pasta indicada acima.
####Sobre o dataset : Esses dois conjuntos de dados possuem todas as requisições HTTP para o servidor da NASA Kennedy Space Center WWW na Flórida para um período específico.
Os logs estão em arquivos ASCII com uma linha por requisição com as seguintes colunas:
- Host fazendo a requisição . Um hostname quando possível, caso contrário o endereço de internet se o nome não puder ser identificado.
- Timestamp no formato "DIA/MÊS/ANO:HH:MM:SS TIMEZONE"
- Requisição (entre aspas)
- Código do retorno HTTP
- Total de bytes retornados
###Questões
Responda as seguintes questões devem ser desenvolvidas em Spark utilizando a sua linguagem de preferência.
- Número de hosts únicos.
- O total de erros 404.
- Os 5 URLs que mais causaram erro 404.
- Quantidade de erros 404 por dia.
- O total de bytes retornados.
Acessar o diretório de projetos e clonar o repositório do GIT na pasta sm_desafio.
Passos para instalação:
$ git clone git clone https://github.com/cglsoft/sm_desafio.git
$ cd sm_desafio
Para rodar a solução o primeiro passo será fazer build do container Docker localizado na pasta sm_desafio/build_docker.
Acessar o diretório build_docker para e executar o script abaixo para a criação da imagem:
$ cd build_docker
$ docker build -t jupyter_notebook:v1 .
#####Referências: Container Docker HUB o repositório do HUB.
Após a criação do container, executar o comando abaixo para identificar o IMAGE_ID que será a referência para a execução do container.
$ docker images
De posse do IMAGE_ID da imagem criada, executar os comandos abaixo subir o container e validação da solução:
####Atenção: Voltar para o diretório do projeto!
$ cd ..
$ docker run -it -p 8888:8888 -v $PWD:/home/jovyan/work --name spark 2bd4d02727b8
Apos o deploy do serviço será fornecido o TOKEN que deverá ser copiado conforme tela abaixo:
No navegador de sua preferência, acessar o endereço do Jupyter Notebook: Jupyter Notebook.
127.0.0.1:8888
Para visualizar as respostas acessar o arquivo : jupyter_notebook
Para execução do projeto utilizar a pasta : spark-submit
O projeto disponibilizado faz toda a funcionalidade do JUPYTER NOTEBOOK conforme demonstrado acima, agora com o o recurso de execução em cluster.
#####Sugestão para execução ( compactar a pasta do projeto com o nome etl_nasa.zip e deixar o main.py fora !
spark-submit --name etl_nasa --master yarn --deploy-mode cluster --num-executors 2 --driver-memory 512m --executor-memory 521m --executor-cores 2 --files /usr/hdp/current/spark2-client/conf/hive-site.xml,/usr/hdp/current/hbase-client/conf/hbase-site.xml,/usr/hdp/current/tez-client/conf/tez-site.xml --py-files etl_nasa.zip main.py
Na pasta [] é possível explorar todo o código ETL para carga das informações:
Veja ETL Carga Datalake
FIM