Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo fornece um guia de referência para as tabelas do sistema de computação. Você pode usar essas tabelas para monitorar a atividade e as métricas da computação clássica de todos os fins, da computação de trabalhos e da computação do Lakeflow Spark Declarative Pipelines em sua conta. Estas tabelas de computação clássicas incluem:
-
clusters: registra as configurações de computação em sua conta. -
node_types: inclui um só registro para cada um dos tipos de nó disponíveis no momento, incluindo informações de hardware. -
node_timeline: inclui registros minuto a minuto das métricas de utilização da computação. -
instance_events: captura transições de estado de instâncias de computação clássicas. -
instance_pools: registra as configurações do pool de instâncias em sua conta.
Esquema de tabela de cluster
A tabela de cluster é uma tabela de dimensão lentamente mutável que contém o histórico completo das configurações de computação ao longo do tempo para computação de uso geral, computação de trabalhos, computação do Lakeflow Spark Declarative Pipelines e computação de manutenção de pipeline.
Caminho da tabela: Esta tabela do sistema está localizada em system.compute.clusters
| Nome da coluna | Tipo de dados | Descrição | Exemplo |
|---|---|---|---|
account_id |
cadeia | ID da conta em que esse cluster foi criado. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
cadeia | ID do workspace em que esse cluster foi criado. | 1234567890123456 |
cluster_id |
cadeia | ID do cluster para o qual esse registro está associado. | 0000-123456-crmpt124 |
cluster_name |
cadeia | Nome definido pelo usuário para o cluster. | My cluster |
owned_by |
cadeia | Nome de usuário do proprietário do cluster. O padrão é o criador do cluster, mas isso pode ser alterado por meio da API de clusters. | sample_user@email.com |
create_time |
carimbo de data/hora | Carimbo de data/hora da alteração para essa definição de computação. | 2023-01-09 11:00:00.000 |
delete_time |
carimbo de data/hora | Carimbo de data/hora de quando o cluster foi excluído. O valor será null se o cluster não for excluído. |
2023-01-09 11:00:00.000 |
driver_node_type |
cadeia | Nome do tipo de nó do driver. Isso corresponde ao nome do tipo de instância do provedor de nuvem. | Standard_D16s_v3 |
worker_node_type |
cadeia | Nome do tipo de nó de trabalho. Isso corresponde ao nome do tipo de instância do provedor de nuvem. | Standard_D16s_v3 |
worker_count |
bigint | Número de trabalhadores. Definido apenas para clusters de tamanho fixo. | 4 |
min_autoscale_workers |
bigint | O número mínimo definido de trabalhadores. Esse campo é válido apenas para clusters de dimensionamento automático. | 1 |
max_autoscale_workers |
bigint | O número máximo definido de trabalhos. Esse campo é válido apenas para clusters de dimensionamento automático. | 1 |
auto_termination_minutes |
bigint | A duração da autoterminação configurada. | 120 |
enable_elastic_disk |
booliano | Status de habilitação do disco de dimensionamento automático. | true |
tags |
mapa | Marcas definidas pelo usuário para o cluster (não incluem marcas padrão). | {"ResourceClass":"SingleNode"} |
cluster_source |
cadeia | Origem do cluster. Os valores UI ou API somente se aplicam à computação de propósito geral. Toda a computação do trabalho é registrada como JOB. Os pipelines são PIPELINE ou PIPELINE_MAINTENANCE. |
UI |
init_scripts |
matriz | Conjunto de caminhos para scripts de inicialização. | "/Users/example@email.com/files/scripts/install-python-pacakges.sh" |
aws_attributes |
struct | Configurações específicas do AWS. | null |
azure_attributes |
struct | Azure configurações específicas. | {"first_on_demand": "0","availability": "ON_DEMAND_AZURE","spot_bid_max_price": "—1"} |
gcp_attributes |
struct | Configurações específicas do GCP. Esse campo estará vazio. | null |
driver_instance_pool_id |
cadeia | ID do pool de instâncias se o driver estiver configurado na parte superior de um pool de instâncias. | 1107-555555-crhod16-pool-DIdnjazB |
worker_instance_pool_id |
cadeia | ID do pool de instâncias se o trabalho estiver configurado na parte superior de um pool de instâncias. | 1107-555555-crhod16-pool-DIdnjazB |
dbr_version |
cadeia | O Databricks Runtime do cluster. | 14.x-snapshot-scala2.12 |
change_time |
carimbo de data/hora | Carimbo de data/hora da alteração para a definição de computação. | 2023-01-09 11:00:00.000 |
change_date |
data | Alterar data. Usado para retenção. | 2023-01-09 |
data_security_mode |
cadeia | O modo de acesso do recurso de computação. Consulte a referência do modo de acesso. | USER_ISOLATION |
policy_id |
cadeia | ID da política de computação do cluster, se aplicável. | 1234F35636110A5B |
Referência do modo de acesso
A tabela a seguir converte os valores possíveis contidos na data_security_mode coluna. A coluna também pode ser null para determinados pipelines e clusters criados pelo sistema.
| Valor | Modo de acesso |
|---|---|
USER_ISOLATION |
Standard |
SINGLE_USER |
Dedicado |
Os modos de acesso herdados são registrados com os seguintes valores:
| Valor | Modo de acesso |
|---|---|
LEGACY_PASSTHROUGH |
Repasse de credenciais (compartilhada) |
LEGACY_SINGLE_USER |
Passagem de credencial (usuário único) |
LEGACY_TABLE_ACL |
Personalizado |
NONE |
Sem isolamento compartilhado |
Esquema de tabela de tipos de nó
A tabela de tipo de nó captura os tipos de nó disponíveis no momento com suas informações básicas de hardware.
Caminho da tabela: essa tabela do sistema está localizada em system.compute.node_types.
| Nome da coluna | Tipo de dados | Descrição | Exemplo |
|---|---|---|---|
account_id |
cadeia | ID da conta em que esse cluster foi criado. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
node_type |
cadeia | Identificador exclusivo para o tipo de nó. | Standard_D16s_v3 |
core_count |
duplo | Número de vCPUs para a instância. | 48.0 |
memory_mb |
Longo | Memória total para a instância. | 393216 |
gpu_count |
Longo | Número de GPUs para a instância. | 0 |
Esquema da tabela da linha do tempo do nó
A tabela de linha do tempo do nó captura dados de utilização de recursos no nível do nó com granularidade mínima. Cada registro contém dados para um determinado minuto de tempo por instância. Esta tabela captura cronogramas dos nós para a computação de uso geral, a computação de trabalhos, o Lakeflow Spark Declarative Pipelines e recursos de computação para manutenção de pipeline em sua conta.
Caminho da tabela: essa tabela do sistema está localizada em system.compute.node_timeline.
| Nome da coluna | Tipo de dados | Descrição | Exemplo |
|---|---|---|---|
account_id |
cadeia | ID da conta em que esse recurso de computação está em execução. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
cadeia | ID do workspace em que esse recurso de computação está sendo executado. | 1234567890123456 |
cluster_id |
cadeia | ID do recurso de computação. | 0000-123456-crmpt124 |
instance_id |
cadeia | ID para a instância específica. | i-1234a6c12a2681234 |
start_time |
carimbo de data/hora | Hora de início do registro em UTC. | 2024-07-16T12:00:00Z |
end_time |
carimbo de data/hora | Hora de término do registro em UTC. | 2024-07-16T13:00:00Z |
driver |
booliano | Se a instância é um driver ou um nó de trabalho. | true |
cpu_user_percent |
duplo | Porcentagem de tempo que a CPU passou no espaço do usuário. | 34.76163817234407 |
cpu_system_percent |
duplo | Porcentagem de tempo que a CPU passou no kernel. | 1.0895310279488264 |
cpu_wait_percent |
duplo | Porcentagem de tempo que a CPU gastou aguardando E/S. | 0.03445157400629276 |
mem_used_percent |
duplo | Porcentagem da memória da computação usada durante o período de tempo (incluindo a memória usada por processos em segundo plano em execução na computação). | 45.34858216779041 |
mem_swap_percent |
duplo | Porcentagem de uso de memória atribuída à troca de memória. | 0.014648443087939 |
network_sent_bytes |
bigint | O número de bytes enviados no tráfego de rede. | 517376 |
network_received_bytes |
bigint | O número de bytes recebidos do tráfego de rede. | 179234 |
disk_free_bytes_per_mount_point |
mapa | A utilização do disco agrupada por ponto de montagem. Esse é o armazenamento temporário provisionado somente enquanto a computação está em execução. | {"/var/lib/lxc":123455551234,"/":123456789123,"/local_disk0":123412341234} |
node_type |
cadeia | O nome do tipo de nó. Isso corresponderá ao nome do tipo de instância do provedor de nuvem. | Standard_D16s_v3 |
private_ip |
cadeia | O endereço IP privado atribuído ao nó. | 10.0.0.42 |
Esquema da tabela de eventos de instância
Importante
Esta tabela do sistema está em Visualização Pública.
A tabela de eventos de instância captura transições de estado de instâncias de computação clássicas. Cada linha representa uma alteração de estado para uma única instância. Esta tabela inclui registros para computação de todas as finalidades, computação de trabalhos e computação do Lakeflow Spark Declarative Pipelines de todos os workspaces em sua conta implantados na mesma região de nuvem.
Caminho da tabela: essa tabela do sistema está localizada em system.compute.instance_events.
| Nome da coluna | Tipo de dados | Descrição | Exemplo |
|---|---|---|---|
account_id |
cadeia | ID da conta em que essa instância é iniciada. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
cadeia | ID do workspace em que essa instância é iniciada. | 1234567890123456 |
instance_id |
cadeia | ID da instância. | i-0a1b2c3d4e5f67890 |
event_time |
carimbo de data/hora | Carimbo de data/hora do evento. | 2024-01-15 10:30:00.000 |
event_type |
cadeia | Tipo de evento. Os valores possíveis são: INSTANCE_LAUNCHING e STATE_TRANSITION. |
STATE_TRANSITION |
instance_pool_id |
cadeia | ID do pool de instâncias se a instância pertencer a um pool. | 1107-555555-pool-abcd1234 |
cluster_id |
cadeia | ID do cluster em que esta instância é colocada. Preenchido somente quando state for INSTANCE_PLACED. Consulte cluster_id detalhes. |
0000-123456-xxxxxxxx |
node_type |
cadeia | O nome do tipo de nó. Isso corresponde ao nome do tipo de instância do provedor de nuvem. | Standard_D16s_v3 |
state |
cadeia | Estado da instância. Consulte os estados da instância. | INSTANCE_PLACED |
availability_type |
cadeia | Tipo de disponibilidade da instância. Os valores possíveis são ON_DEMAND e SPOT (AWS, Azure) ou ON_DEMAND e PREEMPTIBLE (GCP). |
ON_DEMAND |
Estados de instância
-
INSTANCE_LAUNCHING: a instância está sendo inicializada. -
INSTANCE_READY: a instância está totalmente inicializada e pronta para ser usada, mas não está em uso no momento. -
INSTANCE_PLACED: a instância está em uso no momento (ingressou em um cluster). -
INSTANCE_TERMINATED: a instância é encerrada.
Quando cluster_id é populado?
O cluster_id campo só é preenchido quando a instância está no INSTANCE_PLACED estado. Para todos os outros estados (INSTANCE_LAUNCHING, INSTANCE_READY, ), INSTANCE_TERMINATEDcluster_id é null. Esse comportamento é consistente para instâncias em pool e não em pool.
A instance_events tabela inclui apenas eventos de posicionamento para todos os fins, trabalhos e computação do Lakeflow Spark Declarative Pipelines. Eventos de posicionamento para outras cargas de trabalho, como sql warehouses, não estão incluídos nesta tabela.
Esquema de tabela de pools de instância
Importante
Esta tabela do sistema está em Visualização Pública.
A tabela de pools de instância é uma tabela de dimensões de alteração lenta que contém o histórico completo de configurações do pool de instâncias ao longo do tempo. Quando uma configuração é alterada, uma nova linha é emitida, substituindo logicamente a anterior.
Caminho da tabela: essa tabela do sistema está localizada em system.compute.instance_pools.
| Nome da coluna | Tipo de dados | Descrição | Exemplo |
|---|---|---|---|
account_id |
cadeia | ID da conta em que esse pool de instâncias foi criado. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
cadeia | ID do workspace em que esse pool de instâncias foi criado. | 1234567890123456 |
instance_pool_id |
cadeia | ID do pool de instâncias. | 1107-555555-pool-abcd1234 |
change_time |
carimbo de data/hora | Carimbo de data/hora da alteração na configuração do pool de instâncias. | 2024-01-15 10:30:00.000 |
create_time |
carimbo de data/hora | Carimbo de data/hora da criação do pool de instâncias. | 2024-01-10 08:00:00.000 |
delete_time |
carimbo de data/hora | Carimbo de data/hora da exclusão do pool de instâncias. O valor será null se o pool de instâncias não for excluído. |
null |
instance_pool_name |
cadeia | Nome definido pelo usuário do pool de instâncias. | My instance pool |
tags |
mapa | Marcas definidas pelo usuário para o pool de instâncias (não inclui marcas padrão). | {"team":"data-engineering"} |
node_type |
cadeia | Tipo de nó usado para instâncias no pool. Isso corresponde ao nome do tipo de instância do provedor de nuvem. | Standard_D16s_v3 |
idle_instance_autotermination_minutes |
bigint | O número de minutos em que as instâncias ociosas no cache do pool são encerradas automaticamente depois de inativas. | 120 |
min_idle_instances |
bigint | Número mínimo de instâncias ociosas a serem mantidas no pool de instâncias. | 2 |
max_capacity |
bigint | Número máximo de instâncias pendentes a serem mantidas no pool, incluindo tanto as instâncias utilizadas pelos clusters quanto as instâncias ociosas. | 10 |
enable_elastic_disk |
booliano | Dimensionamento automático do Armazenamento Local: quando habilitados, as instâncias nesse pool adquirem dinamicamente espaço em disco adicional quando os trabalhadores do Spark estão executando pouco espaço em disco. | true |
disk_spec |
struct | A especificação dos discos anexados a todos os contêineres do Spark. | {"disk_type": "PREMIUM_LRS","disk_count": 2,"disk_size": 100} |
preloaded_docker_images |
matriz | Imagens personalizadas do Docker pré-carregadas no pool. | [] |
preloaded_spark_version |
cadeia | Versão de imagem do Spark pré-carregada para o pool, se definida. | 14.3.x-scala2.12 |
aws_attributes |
struct | Atributos relacionados a pools de instância em execução no AWS. | null |
azure_attributes |
struct | Atributos relacionados a pools de instâncias em execução no Azure. | {"availability": "ON_DEMAND_AZURE","spot_bid_max_price": -1} |
gcp_attributes |
struct | Atributos relacionados a pools de instância em execução no GCP. | null |
Limitações conhecidas
- Os recursos de computação que foram marcados como excluídos antes de 23 de outubro de 2023 não aparecem na tabela de clusters. Isso pode resultar em junções da tabela
system.billing.usagenão correspondentes aos registros na tabela de clusters. Todos os recursos de computação ativos foram preenchidos. - Essas tabelas incluem apenas registros para a Computação para Todas as Finalidades e a Computação de Trabalhos. Eles não contêm registros para computação sem servidor ou sql warehouses.
- Os nodes que rodaram por menos de 10 minutos podem não aparecer na tabela
node_timeline.
Consultas de exemplo
Você pode usar as seguintes consultas de exemplo para responder a perguntas comuns:
- Junte os registros de cluster aos registros de faturamento mais recentes
- Identifique os recursos de computação com a maior utilização média e utilização de pico
- Obter a versão mais recente de cada pool de instâncias
- Calcular a instância ociosa e o tempo ativo
Observação
Alguns desses exemplos unem a tabela de cluster com a tabela system.billing.usage. Como os registros de cobrança são entre regiões e os registros de cluster são de regiões específicas, os registros de cobrança correspondem apenas aos registros de cluster da região em que você está consultando. Para ver registros de outra região, execute a consulta nessa região.
Unir registros de cluster com os registros de cobrança mais recentes
Essa consulta pode ajudá-lo a entender os gastos ao longo do tempo. Ao atualizar o usage_start_time para o período de cobrança mais atual, ele captura as atualizações mais recentes dos registros de cobrança para incorporar dados em clusters.
Cada registro é associado ao proprietário do cluster durante essa execução específica. Portanto, se o proprietário do cluster for alterado, os custos serão acumulados para o proprietário correto com base em quando o cluster foi usado.
SELECT
u.record_id,
c.cluster_id,
c.owned_by,
c.change_time,
u.usage_start_time,
u.usage_quantity
FROM
system.billing.usage u
JOIN system.compute.clusters c
JOIN (SELECT u.record_id, c.cluster_id, max(c.change_time) change_time
FROM system.billing.usage u
JOIN system.compute.clusters c
WHERE
u.usage_metadata.cluster_id is not null
and u.usage_start_time >= '2023-01-01'
and u.usage_metadata.cluster_id = c.cluster_id
and date_trunc('HOUR', c.change_time) <= date_trunc('HOUR', u.usage_start_time)
GROUP BY all) config
WHERE
u.usage_metadata.cluster_id is not null
and u.usage_start_time >= '2023-01-01'
and u.usage_metadata.cluster_id = c.cluster_id
and u.record_id = config.record_id
and c.cluster_id = config.cluster_id
and c.change_time = config.change_time
ORDER BY cluster_id, usage_start_time desc;
Identificar os recursos de computação com a maior utilização média e pico de utilização
Identifique a computação para todas as finalidades e trabalhos que têm a maior utilização média da CPU e o maior pico de utilização da CPU.
SELECT
distinct cluster_id,
driver,
avg(cpu_user_percent + cpu_system_percent) as `Avg CPU Utilization`,
max(cpu_user_percent + cpu_system_percent) as `Peak CPU Utilization`,
avg(cpu_wait_percent) as `Avg CPU Wait`,
max(cpu_wait_percent) as `Max CPU Wait`,
avg(mem_used_percent) as `Avg Memory Utilization`,
max(mem_used_percent) as `Max Memory Utilization`,
avg(network_received_bytes)/(1024^2) as `Avg Network MB Received per Minute`,
avg(network_sent_bytes)/(1024^2) as `Avg Network MB Sent per Minute`
FROM
node_timeline
WHERE
start_time >= date_add(now(), -1)
GROUP BY
cluster_id,
driver
ORDER BY
3 desc;
Obter a versão mais recente de cada pool de instâncias
A instance_pools tabela é do tipo SCD2, em que, em vez de atualizar registros existentes, um novo registro é criado sempre que uma alteração é feita. Para obter a versão mais recente, use a entrada com a maior change_time.
SELECT *
FROM system.compute.instance_pools
QUALIFY row_number() OVER (
PARTITION BY workspace_id, instance_pool_id
ORDER BY change_time DESC
) = 1;
Calcular a instância ociosa e o tempo ativo
Essa consulta calcula o tempo ocioso total e o tempo ativo para cada instância usando transições de estado da instance_events tabela.
WITH instance_states AS (
SELECT
*,
event_time AS start_time,
lead(event_time) OVER (
PARTITION BY workspace_id, instance_id
ORDER BY event_time
) AS end_time
FROM system.compute.instance_events
WHERE event_type IN ('INSTANCE_LAUNCHING', 'STATE_TRANSITION')
)
SELECT
workspace_id,
instance_id,
instance_pool_id,
sum(if(state = 'INSTANCE_READY',
TIMESTAMPDIFF(SECOND, start_time, end_time), 0)) / 60 AS idle_minutes,
sum(if(state = 'INSTANCE_PLACED',
TIMESTAMPDIFF(SECOND, start_time, end_time), 0)) / 60 AS active_minutes
FROM instance_states
GROUP BY workspace_id, instance_id, instance_pool_id;