From 9945699aa36199e88c51d3387f7f12e19740089d Mon Sep 17 00:00:00 2001 From: j-armenio <joaoarmeniosilveira@gmail.com> Date: Wed, 4 Sep 2024 09:38:25 -0300 Subject: [PATCH] =?UTF-8?q?add:=20Conex=C3=A3o=20com=20o=20Clickhouse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apache Superset/Conexao_com_Clickhouse.md | 84 +++++++++++++++++++ Apache Superset/Criacao_de_plugins.md | 2 +- .../Criacao_teste_producao_do_frontend.md | 2 +- Apache Superset/Dev_Front_Remoto.md | 5 ++ 4 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 Apache Superset/Conexao_com_Clickhouse.md create mode 100644 Apache Superset/Dev_Front_Remoto.md diff --git a/Apache Superset/Conexao_com_Clickhouse.md b/Apache Superset/Conexao_com_Clickhouse.md new file mode 100644 index 0000000..d47b257 --- /dev/null +++ b/Apache Superset/Conexao_com_Clickhouse.md @@ -0,0 +1,84 @@ +# Conexão com o Clickhouse +--- + +O superset não tem por padrão o driver de conexão com o `clickhouse` instalado, então devemos instalar manualmente, seguindo o tutorial em https://superset.apache.org/docs/configuration/databases#clickhouse. + +## Instalando o conector clickhouse + +Para que o conector seja instalado toda vez que for feita uma nova imagem do superset (utilizando o dockerfile disponÃvel por padrão) deve ser criado o arquivo `./docker/requirements-local.txt` e colocado dentro dele: + +```txt +clickhouse-connect>=0.6.8 +``` + +Em seguida é necessário comentar as seguintes linhas do arquivo `.gitignore`: + +```gitignore +# docker/requirements-local.txt +# docker/*local* +``` + +### O arquivo `./docker/requirements-local.txt` + +É um arquivo de configuração de pacotes do python, como um `requirements.txt` do pip.Ele serve para assegurar que os pacotes Python sejam instalados ao executar algum `docker compose`. + +## Conectando ao clickhouse + +Para conectar ao clickhouse basta acessar o Superset no navegador, ir nas configurações clicar em adicionar novo Database e inserir os seguintes dados: + +- Host: host do banco de dados clickhouse +- Port: porta que o banco está servindo +- Database: qual banco de dados acessar +- User: Qual usuário vai conectar no banco +- Password: Qual a senha que deve ser utilizada par o User conectar no banco +- Database Name: Como deve ser chamado o database dentro do Superset + +### Conectando ao clickhouse (programaticamente) + +É possÃvel criar essa conexão automaticamente ao subir o Superset, para evitar ter de criar sempre que uma nova imagem for construida ou apagar o banco de metadados do superset. + +Para isso vamos utilizar o arquivo `./docker/docker-init.sh`. Esse script é executado para iniciar o superset, nele temos acesso a executar o comando: + +```bash +superset set_database_uri --database_name "$SUPERSET_CLICKHOUSE_DATABASE_NAME" --uri "$SUPERSET_CLICKHOUSE_URI" +``` + +Para mater um padrão de código, o trecho adicionado deve ser parecido com + +```bash +# =================== C3SL-docs Conectando o clickhouse =================== +if [ "$SUPERSET_CONNECT_CLICKHOUSE" = "yes" ]; then + echo_step "5" "Starting" "Coonectando com clickhouse (clickhouse@c3sl.ufpr.br)" + + SUPERSET_CLICKHOUSE_URI="clickhousedb://$SUPERSET_CLICKHOUSE_USERNAME:$SUPERSET_CLICKHOUSE_PASSWORD@$SUPERSET_CLICKHOUSE_HOST:$SUPERSET_CLICKHOUSE_PORT/$SUPERSET_CLICKHOUSE_DATABSE" + superset set_database_uri --database_name "$SUPERSET_CLICKHOUSE_DATABASE_NAME" --uri "$SUPERSET_CLICKHOUSE_URI" + + echo_step "5" "Complete" "Coonectando com clickhouse (clickhouse@c3sl.ufpr.br)" +fi +# =================== C3SL-docs Conectando o clickhouse =================== +``` + +Ele cria uma nova conexão com o database já cofigurado anteriormente. + +##### :mega: NÃO TENTA CRIAR NOVA CONEXÃO SE ELA Jà EXISTE. + +### Configurando as variáveis de conexão + +São necessárias algumas variáveis de credenciais para que seja criado o database, elas devem se criadas e adicionadas em `./docker/.env`. São elas: + +```bash +# =================== C3SL-docs Conectando o clickhouse =================== +SUPERSET_CONNECT_CLICKHOUSE=yes +SUPERSET_CLICKHOUSE_USERNAME=depp +SUPERSET_CLICKHOUSE_PASSWORD='<password>' +SUPERSET_CLICKHOUSE_HOST=clickhouse.c3sl.ufpr.br +SUPERSET_CLICKHOUSE_PORT=8123 +SUPERSET_CLICKHOUSE_DATABSE=dados_educacionais +SUPERSET_CLICKHOUSE_DATABASE_NAME='ClickHouse - DEPP' +# =================== C3SL-docs Conectando o clickhouse =================== +``` + +##### :mega: Ver com equipe de BD as credenciais para preencher as variáveis. + +##### :warning: Descobrir forma de não deixar essas variáveis "hardcoded" no repositório, criar script de prod. + diff --git a/Apache Superset/Criacao_de_plugins.md b/Apache Superset/Criacao_de_plugins.md index 912e9a5..4451e0e 100644 --- a/Apache Superset/Criacao_de_plugins.md +++ b/Apache Superset/Criacao_de_plugins.md @@ -15,7 +15,7 @@ Para não colocar o plugin em `/tmp` crie um diretório que fica fora da raiz do Siga o tutorial até a parte que ele pede para executar `npm run dev-server`. Sim, vamos rodar local o superset-frontend (mas apenas ele, o backend e banco ainda vão estar no docker). Para que o superset não crie o serviço webpack no docker precisamos marcar a flag `BUILD_SUPERSET_FRONTEND_IN_DOCKER=false` e depois executar o `docker compose up` na raiz do projeto. Após subir o docker podemos rodar `npm run dev-server`. -Baseado no que já vimos de [como rodar o frontend local]() você pode escolher como quer rodar +Baseado no que já vimos de [como rodar o frontend local](/Criacao_teste_producao_do_frontend.md) você pode escolher como quer rodar - `npm run dev`: Sem servidor webpack - `npm run dev-server`: Com servidor webpack diff --git a/Apache Superset/Criacao_teste_producao_do_frontend.md b/Apache Superset/Criacao_teste_producao_do_frontend.md index c1500ec..25ae8f5 100644 --- a/Apache Superset/Criacao_teste_producao_do_frontend.md +++ b/Apache Superset/Criacao_teste_producao_do_frontend.md @@ -1,7 +1,7 @@ # Criação, teste e produção do frontend Superset --- -O superset atual é formado por vários processos:1 +O superset atual é formado por vários processos: * backend * banco diff --git a/Apache Superset/Dev_Front_Remoto.md b/Apache Superset/Dev_Front_Remoto.md new file mode 100644 index 0000000..d1d120d --- /dev/null +++ b/Apache Superset/Dev_Front_Remoto.md @@ -0,0 +1,5 @@ +# Dev Front Remoto +--- + +No momento a melhor solução que encontramos para o desenvolvimento usando Superset é: rodar o frontend local nas máquinas de cada dev, conectados ao backend de uma VM de desenvolvimento. + -- GitLab