top of page

DTSTOOLS - Descubra o verdadeiro tamanho do seu Delta Lake

Fala dataholics, o post de hoje é especial pra mim, publiquei meu primeiro projeto no PyPI e compartilharei com vocês a DTSTOOLS.


O que veremos nesse post:

  • PyPI

  • DTSTOOLS

  • Instalando a DTSTOOLS no seu cluster

  • tableSize

  • tableMaintenance

  • Considerações finais


Para quem não conhece o PyPI (Python Package Index) ele é um repositório de código para Python, então você pode publicar seu código python como uma biblioteca e disponibilizar para a comunidade. O PyPI tem atualmente mais de 400 mil projetos publicados, mais de 4 milhões de releases e mais 700 mil usuários ativos.


Ainda não lembrou do PyPI? Sabe quando você roda aquele famoso pip install, é de la que as bibliotecas são baixadas.


Hoje o PyPI ganhou mais 1 projeto, apresento a vocês o DTSTOOLS.


 

Para quem leu esse post sobre manutenção de tabelas Delta, lembrará que eu já tinha essa ideia de criar uma biblioteca para facilitar a manipulação de tabelas Delta, se ainda não viu vale a pena ler.

A ideia do DTSTOOLS não é nova, quando atuava no time de DBA, tínhamos nosso pacote de scripts que se chamava DTSTOOLS (quem sabe ele não pode se juntar a esse), então decidi criar uma DTSTOOLS para trabalhar com Delta Lake, a ideia principal é encapsular funções uteis do dia a dia e deixá-las em um formato fácil de usar, sem precisar importar notebook ou ficar copiando e colando blocos grandes de código.


Então publiquei a primeira versão com 2 funções que são bem úteis, a meu ver, e espero que te ajude.


Toda a documentação está no README do pacote, mas quero mostrar alguns exemplos mais práticos.


Primeiro, como instalar?


Você pode instalar através do famoso PIP INSTALL, no exemplo abaixo estou instalando no contexto daquele notebook, se o cluster for reiniciado é necessário instalar novamente.

Outra maneira mais fácil é instalar nas bibliotecas do Cluster, assim quando ele ligar sempre instalará essa lib e você não precisa se preocupar com isso.


Vá no seu cluster na aba Libraries e clique em Install New, selecione PyPI e apenas digite o nome dtstools e pronto.



Após instalado, basta importar o módulo dtsTable do pacote dtstools para o contexto do seu notebook.


Aqui já estou chamando a função Help() que nos dá uma introdução rápida dos comandos e alguns exemplos para agilizar e você não precisar ficar abrindo a doc completa.


 

Vamos para a função principal que é a tableSize(), essa função retorna um dataframe que contém informações sobre o tamanho da sua tabela, mas não só o tamanho da versão atual, ela mostra também o tamanho da sua tabela no Storage, isso pode te ajudar a planejar uma execução de Vacuum ou Optimize.

Aqui temos informações bem importantes como:

  • Tamanho da versão atual

  • Quantidade de arquivos da versão atual

  • Tamanho da tabela no storage (Contendo todas as versões)

  • Quantidade de arquivos no Storage

Com essa função podemos ver tabelas com 1 TB de Storage, mas com apenas 10 GB de dados, ou seja, estamos gastando 1 TB só para versões antigas (Time Travel), será que vale a pena essa quantidade de versões? Será que não vale a pena rodar um Vacuum e economizar esse espaço?


Na imagem acima note que o Storage é 60 vezes maior que a versão atual da tabela, se não utilizo o Time Travel, talvez posso rodar um Vaccum deixando apenas as últimas 48 horas?


Também deixei um script que coleta essa informação para todas as tabelas de um banco de dados e você pode customizar como quiser.


Esse script já salva os dados em uma Delta Table para que você possa analisar e monitorar o crescimento delas.



 

E não menos importante, já que estamos falando em redução de custo com Storage e melhoria de performance, temos a função tableMaintenance.


Essa função visa rodar as operações de Optimize e Vacuum exatamente nessa sequência para garantir melhor performance e limpeza.


Já tinha liberado esse script antes nesse post:

Você pode parametrizar da maneira que achar melhor, inclusive passando colunas para o Zorder e tempo de retenção dos logs.

Note que essa função já apresenta na tela os logs de execução.


Você pode rodar para todas as tabelas fazendo um loop bem simples.

Note que deixei o Debug habilitado então ele só printou o que ia acontecer.

 

Em breve quero melhorar essas funções já existentes e postar novas funções para utilizar no dia a dia.


Se você gostou da ideia e tem algum script que acha valido compartilhar, você pode contribuir com ela no github.

Espero que seja útil para você, a ideia de encapsular em uma biblioteca é para facilitar o uso on demand, ou seja, para usar no dia a dia, realizando troubleshooting e também facilitar a criação da sua rotina de manutenção.


Fique bem e até a próxima.


Link PyPI:


Link Github:



409 visualizações0 comentário
Post: Blog2 Post
bottom of page