Isenção de responsabilidade: Todas as opiniões e visões expressas no blog pertencem exclusivamente ao autor e não necessariamente ao empregador do autor ou qualquer outro grupo ou indivíduo. Este artigo não é uma promoção para nenhuma plataforma de gerenciamento de dados/nuvem. Todas as imagens e APIs estão disponíveis publicamente no site da Azure/Databricks.
O que é o Monitoramento do Databricks Lakehouse?
Em meus outros artigos, descrevi o que são o Databricks e o Unity Catalog, e como criar um catálogo do zero usando um script. Neste artigo, descreverei o recurso de Monitoramento do Lakehouse disponível como parte da plataforma Databricks e como ativar o recurso usando scripts.
O Monitoramento do Lakehouse fornece perfilagem de dados e métricas relacionadas à qualidade dos dados para as Delta Live Tables no Lakehouse. O Monitoramento do Databricks Lakehouse fornece uma visão abrangente dos dados, como mudanças no volume de dados, alterações na distribuição numérica, % de nulos e zeros nas colunas, e detecção de anomalias categóricas ao longo do tempo.
Por que usar o Monitoramento do Lakehouse?
Monitorar seus dados e o desempenho do modelo ML fornece medidas quantitativas que ajudam a acompanhar e confirmar a qualidade e a consistência dos seus dados e do desempenho do modelo ao longo do tempo.
Aqui está uma análise das principais características:
- Rastreamento da qualidade e integridade dos dados: Rastreia o fluxo de dados através de pipelines, garantindo a integridade dos dados e fornecendo visibilidade sobre como os dados mudaram ao longo do tempo, percentil 90 de uma coluna numérica, % de colunas nulas e zero, etc.
- Desvios de dados ao longo do tempo: Fornece métricas para detectar desvios de dados entre os dados atuais e uma linha de base conhecida, ou entre janelas de tempo sucessivas dos dados
- Distribuição estatística dos dados: Fornece a mudança na distribuição numérica dos dados ao longo do tempo que responde a qual é a distribuição de valores em uma coluna categórica e como ela difere do passado
- Desempenho do modelo ML e desvios de previsão: Entradas do modelo ML, previsões e tendências de desempenho ao longo do tempo
Como Funciona
O Monitoramento do Databricks Lakehouse fornece os seguintes tipos de análise: séries temporais, instantâneas e inferência.
Tipos de perfil para monitoramento
Quando você ativa o monitoramento do Lakehouse para uma tabela no Unity Catalog, são criadas duas tabelas no esquema de monitoramento especificado. Você pode consultar e criar painéis (o Databricks fornece um painel configurável padrão pronto para uso) e notificações nas tabelas para obter informações estatísticas e de perfil abrangentes sobre seus dados ao longo do tempo.
- Tabela de métrica de drift: A tabela de métricas de drift contém estatísticas relacionadas ao drift dos dados ao longo do tempo. Ela captura informações como diferenças na contagem, a diferença na média, a diferença em % nulo e zeros, etc.
- Tabela de métrica de perfil: A tabela de métricas de perfil contém estatísticas resumidas para cada coluna e para cada combinação de janela de tempo, fatia e colunas de agrupamento. Para a análise do InferenceLog, a tabela de análise também contém métricas de precisão do modelo.
Como Habilitar o Monitoramento do Lakehouse via Scripts
Pré-requisitos
- Unity Catalog, esquema e Delta Live Tables estão presentes.
- O usuário é o proprietário da Delta Live Table.
- Para clusters privados do Azure Databricks, conectividade privada a partir de computação sem servidor está configurada.
Passo 1: Crie um Notebook e Instale o Databricks SDK
Crie um notebook no espaço de trabalho do Databricks. Para criar um notebook no seu espaço de trabalho, clique em “+” Novo na barra lateral e, em seguida, escolha Notebook.
Um notebook em branco será aberto no espaço de trabalho. Certifique-se de que Python esteja selecionado como a linguagem do notebook.
Copie e cole o trecho de código abaixo na célula do notebook e execute a célula.
%pip install databricks-sdk --upgrade
dbutils.library.restartPython()
Passo 2: Crie Variáveis
Copie e cole o trecho de código abaixo na célula do notebook e execute a célula.
catalog_name = "catalog_name" #Replace the catalog name as per your environment.
schema_name = "schema_name" #Replace the schema name as per your environment.
monitoring_schema = "monitoring_schema" #Replace the monitoring schema name as per your preferred name.
refresh_schedule_cron = "0 0 0 * * ?" #Replace the cron expression for the refresh schedule as per your need.
Passo 3: Crie o Esquema de Monitoramento
Copie e cole o trecho de código abaixo na célula do notebook e execute a célula. Este trecho criará o esquema de monitoramento se ele ainda não existir.
%sql
USE CATALOG `${catalog_name}`;
CREATE SCHEMA IF NOT EXISTS `${monitoring_schema}`
Passo 4: Crie o Monitor
Copie e cole o trecho de código abaixo na célula do notebook e execute a célula. Este trecho criará o Monitoramento do Lakehouse para todas as tabelas dentro do esquema.
import time
from databricks.sdk import WorkspaceClient
from databricks.sdk.errors import NotFound, ResourceDoesNotExist
from databricks.sdk.service.catalog import MonitorSnapshot, MonitorInfo, MonitorInfoStatus, MonitorRefreshInfoState, MonitorMetric, MonitorCronSchedule
databricks_url = 'https://adb-xxxx.azuredatabricks.net/' # replace the url with your workspace url
api_token = 'xxxx' # replace the token with your personal access token for the workspace. Best practice - store the token in Azure KV and retrieve the token using key-vault scope.
w = WorkspaceClient(host=databricks_url, token=api_token)
all_tables = list(w.tables.list(catalog_name=catalog_name, schema_name=schema_name))
for table in all_tables:
table_name = table.full_name
info = w.quality_monitors.create(
table_name = table_name,
assets_dir = "/Shared/databricks_lakehouse_monitoring/", # Creates monitoring dashboards in this location
output_schema_name = f"{catalog_name}.{monitoring_schema}",
snapshot = MonitorSnapshot(),
schedule = MonitorCronSchedule(quartz_cron_expression = refresh_schedule_cron, timezone_id = "PST") # update timezone as per your need.
)
# Wait for monitor to be created
while info.status == MonitorInfoStatus.MONITOR_STATUS_PENDING:
info = w.quality_monitors.get(table_name=table_name)
time.sleep(10)
assert info.status == MonitorInfoStatus.MONITOR_STATUS_ACTIVE, "Error creating monitor"
Validação
Após a execução bem-sucedida do script, você pode navegar até catálogo -> esquema -> tabela e ir para a aba “Qualidade” na tabela para visualizar os detalhes do monitoramento.
Se você clicar no botão “Ver painel” no canto superior esquerdo da página Monitoramento, o painel de monitoramento padrão será aberto. Inicialmente, os dados estarão em branco. À medida que o monitoramento for executado de acordo com o cronograma, ao longo do tempo, ele preencherá todos os valores estatísticos, de perfil e de qualidade dos dados.
Você também pode navegar até a aba “Dados” no painel. O Databricks, por padrão, fornece uma lista de consultas para obter a deriva e outras informações de perfil. Você também pode criar suas próprias consultas conforme sua necessidade para obter uma visão abrangente de seus dados ao longo do tempo.
Conclusão
O Monitoramento do Databricks Lakehouse oferece uma maneira estruturada de acompanhar a qualidade dos dados, métricas de perfil e detectar deriva de dados ao longo do tempo. Ao habilitar esse recurso por meio de scripts, as equipes podem obter insights sobre o comportamento dos dados e garantir a confiabilidade de seus pipelines de dados. O processo de configuração descrito neste artigo fornece uma base para manter a integridade dos dados e apoiar os esforços contínuos de análise de dados.
Source:
https://dzone.com/articles/how-to-enable-azure-databricks-lakehouse-monitoring