Olá, tudo bem contigo?
A ideia deste artigo é poder te ajudar a implementar o teu pipeline de dados, pois nada adianta você desenvolver todo o ETL, e ficar executando de forma manual, não faz sentido.
Como podemos agendar um pipeline desenvolvido no Apache Hop?
Bom, temos algumas formas de fazer isso. A forma mais simples seria utilizando hop-run, onde criamos um arquivo .bat no Windows ou .sh no Linux.
Para projetos maiores, talvez seja necessário uma solução própria de orquestração de dados, como por exemplo:
- Apache Airflow.
- Jenkins.
- Dagster.
- Rundeck.
Segue o link da documentação oficial do hop-run no site do Hop: Link Documentação
Segundo a documentação, podemos utilizar o seguinte script como exemplo:
hop-run.bat -j samples -r local -f ${PROJECT_HOME}/transforms/switch-case-basic.hpl
Na documentação verá que temos alguns parametros muito interessantes para utilizar no Hop Run.
Conseguimos executar um mesmo pipeline para projetos diferentes, ambientes, configurações de execução, particularmente eu gostei das opções que o hop-run oferece.
Sobre configuração de execução temos um artigo que explicamos a diferença de executar o teu pipeline local e via Hop-Server.
Criei o seguinte Pipeline para utilizar como exemplo neste artigo:
Neste ETL, basicamente estamos lendo duas tabelas, fazemos o join e por último gravamos o resultado em uma nova tabela.
Uma vez que temos o pipeline testado e funcionando.
Tabela nova criada e com os seus respectivos dados carregados.
Agora iremos criar o script .bat para este nosso pipeline que acabamos de criar e validar.
C:\hop\hop-run.bat -j hopbase -r local -f C:\Hop\config\hopbase\test_job.hpl
Agora vamos testar este script abrindo a linha de comando do Windows, ou abrir o executar e digitar cmd e clicar em Ok.
Agora basta copiar o comando e verificar se o pipeline será executado no prompt de comando.
Maravilha, pipeline executado via linha de comando.
Próximos passos:
- Criar uma pasta Jobs no Disco Local(C:\).
- Criar um arquivo test.bat copiando o script que utilizamos para executar via linha de comando.
- Executar o script .bat clicando duas vezes no arquivo.
Agora que temos a certeza de que o nosso script .bat está funcionando, vamos para a última etapa do nosso artigo.
Abrir o Agendador de tarefas do Windows e criar uma tarefa para executar de forma automática.
Para finalizar, crie uma tarefa, escolha qual a frequência que essa tarefa será executada, uma vez ao dia, de hora em hora.
E depois na aba Ação selecione o script .bat que criou.
E pronto o teu pipeline está agendado e executando de forma automática.
Espero que este artigo tenha te ajudado.
Muito Obrigado e até o próximo artigo.
Rafael Arruda.
Obrigado pelo artigo. Conteúdo muito bom!
Precisei fazer algo parecido para o meu pipeline e era primordial utilizar o Airflow.
Depois de tentar um plugin pro airflow e seguir o exemplo na pagina do hop não consegui fazer a integração, então segui para criar uma forma, uso exatamente o que vc ensinou no artirgo, script do hop-run, sendo executado pelo airflow, funciona perfeitamente bem.
Como sobe uma instancia do hop, no ariflow, ele só da sucesso quando termina com sucesso e da erro quando termina com erro, nem precisa tratar o status da execução 🙂
Valeu Arruda, se quiser te passo os arquivos….um abraço!
Muito bom Paulo, que bom que curtiu o conteúdo do artigo.
Pode passar sim, quem sabe mais pra frente faço um artigo sobre hop e airflow.
Ótima semana pra ti!!
Paulo, gostaria de entender como você fez para utilizar o hop no airflow, pode me passar o seu linkedin para trocarmos uma ideia sobre?
Abs!
Obrigado, Rafael! As atualizações funcionaram perfeitamente. Consegui sincronizar o mesmo repositório entre minha máquina e a VM através do mapeamento da unidade na VM. No Pentaho, isso não era necessário, mas com o Hop, só consegui dessa forma. Agradeço pelo suporte!
Que bom que funcionou Vitor, veja este artigo sobre a utilização do Hop Server também:
https://arrudaconsulting.com.br/como-instalar-o-hop-server/
Obrigado.
Muito bom o artigo, Rafael.
Uma dúvida, é possível adicionar nesse script da .bat um comando para gravarmos o LOG em um arquivo .txt toda vez que a .bat for executada ?
Obrigada
é possível sim só adicionar >> diretório que vai gravar o log.
ex: >> c:/logs/log_etl.log.
Obrigado.