Superset (Tier 3 – Orquestração & BI)¶
Objetivo: Interface de exploração SQL e dashboards sobre os catálogos do Trino (Hive, Delta/Lakehouse).
Imagem¶
- Imagem customizada construída a partir de
docker/superset.Dockerfile, baseada emapache/superset:${SUPERSET_VERSION}. - Instala
psycopg2-binarypara o banco de metadados PostgreSQL. - Instala
sqlalchemy-trinopara conectar ao Trino sem dependências extras.
Configuração¶
- Templates:
templates/superset/superset.env.tpl→config/superset/superset.envviapython3 flumen config --service superset.templates/superset/superset_config.py.tpl→config/superset/superset_config.py.- Variáveis principais (definidas em
.env): SUPERSET_VERSION– tag da imagem.SUPERSET_PORT– porta do host/UI (padrão8088).SUPERSET_DB_NAME– banco de metadados criado no PostgreSQL.SUPERSET_SECRET_KEY– chave secreta do Flask para sessões/CSRF.SUPERSET_ADMIN_*– usuário admin inicial (usuário, senha, e-mail, nomes).- Dependências em runtime:
- Banco de metadados: PostgreSQL (
postgresql+psycopg2://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${SUPERSET_DB_NAME}). - Volume nomeado:
flumen_superset_homemontado em/app/superset_home(configurações, uploads, estado).
Uso¶
python3 flumen rebuild --service superset # (Opcional) constrói a imagem customizada
python3 flumen config --service superset # Renderiza env + config
python3 flumen superset-db # Garante o banco de metadados no PostgreSQL
python3 flumen up --tier 3 # Sobe Trino + Superset
python3 flumen health --service superset # Verifica saúde via HTTP
python3 flumen logs --service superset # Segue os logs
python3 flumen shell-superset # Abre bash dentro do container
Acesse http://localhost:${SUPERSET_PORT} (padrão http://localhost:8088).
Credenciais Padrão¶
- Usuário:
admin - Senha:
admin123
Altere esses valores no .env antes de rodar python3 flumen config --service superset para não usar os padrões.
Conectar o Superset ao Trino¶
Crie um novo Database no Superset:
- Vá em Settings → Database Connections → + Database.
- Escolha Other e use a URI SQLAlchemy (o driver
sqlalchemy-trinojá está instalado): - Dentro da rede Docker:
trino://trino@trino:8080/lakehouse - A partir do host:
trino://trino@localhost:8082/lakehouse(ouhost.docker.internalno macOS/Windows selocalhostnão alcançar o container) - Teste a conexão e salve. Os catálogos (
hive,delta,lakehouse) ficam disponíveis para criar datasets.
Detalhes de Inicialização¶
O comando do container executa:
superset db upgrade– migrações.superset fab create-admin ...– cria o usuário admin de forma idempotente.superset init– carrega papéis e permissões.- Inicia o Gunicorn (
gunicorn -w 4 -k gevent ...).
Solução de Problemas¶
- Falha imediata no login: garanta que cookies estejam habilitados e que
SUPERSET_SECRET_KEYpermaneça estável entre reinicializações. - Superset inacessível: execute
python3 flumen health --service supersete verifiquedocker compose -f docker-compose.tier3.yml logs superset. - Erros no banco de metadados: rode
python3 flumen superset-dbdepois que o PostgreSQL estiver saudável para criar o bancosupersetantes de iniciar o container. - Timeout consultando o Trino: verifique se todos os tiers estão na mesma rede Docker (
python3 flumen up) e se a URI SQLAlchemy utiliza o hostname internotrino.