Sistema de empregos table referência
Nota
O lakeflow
schema era anteriormente conhecido como workflow
. O conteúdo de ambos os esquemas é idêntico. Para tornar o lakeflow
schema visível, você deve habilitá-lo separadamente.
Este artigo é uma referência sobre como usar o sistema lakeflow
tables para monitorar trabalhos em sua conta. Esses tables incluem registos de todos os espaços de trabalho na sua conta implementados na mesma região de nuvem. Para ver registos de outra região, deves visualizar o tables de um espaço de trabalho implantado nessa região.
Requerimentos
- O
system.lakeflow
schema deve ser ativado por um administrador de conta. Consulte Ativar esquemas do sistema table. - Para aceder a estes tablesdo sistema, os utilizadores devem realizar uma das seguintes ações:
- Seja um administrador de metastore e um administrador de conta, ou
- Ter permissões de
USE
eSELECT
nos esquemas do sistema. Consulte o acesso ao sistema Granttables.
Vagas disponíveis tables
Todos os sistemas relacionados com empregos tables vivem no system.lakeflow
schema. Atualmente, a schema acolhe quatro tables:
Table | Description | Suporta streaming | Período de retenção gratuito | Inclui dados globais ou regionais |
---|---|---|---|---|
vagas (Visualização pública) | Rastreia todos os trabalhos criados na conta | Sim | 365 dias | Regionais |
job_tasks (Visualização pública) | Rastreia todas as tarefas de trabalho executadas na conta | Sim | 365 dias | Regionais |
job_run_timeline (Visualização pública) | Rastreia as execuções de tarefas e os metadados relacionados | Sim | 365 dias | Regionais |
job_task_run_timeline (Visualização Pública) | Rastreia execuções de tarefas de trabalho e metadados relacionados | Sim | 365 dias | Regionais |
Referência detalhada schema
As seções a seguir fornecem referências schema para cada um dos trabalhos relacionados ao sistema tables.
Empregos tableschema
O jobs
table é uma dimensão table em mudança lenta (SCD2). Quando uma linha muda, uma nova linha é emitida, substituindo logicamente a anterior.
Table caminho: system.lakeflow.jobs
Column nome | Tipo de dados | Description | Observações |
---|---|---|---|
account_id |
string | O ID da conta a que este trabalho pertence | |
workspace_id |
string | A ID do espaço de trabalho ao qual este trabalho pertence | |
job_id |
string | A ID do trabalho | Apenas exclusivo dentro de um único espaço de trabalho |
name |
string | O nome do trabalho fornecido pelo usuário | |
description |
string | A descrição do trabalho fornecida pelo usuário | Este campo estará vazio se você tiver chaves gerenciadas pelo cliente configuradas. Não preenchido para linhas emitidas antes do final de agosto de 2024 |
creator_id |
string | O ID da autoridade principal que criou a tarefa | |
tags |
string | As tags personalizadas fornecidas pelo usuário associadas a este trabalho | |
change_time |
carimbo de data/hora | A hora em que o trabalho foi modificado pela última vez | Timezone registado como +00:00 (UTC) |
delete_time |
carimbo de data/hora | A hora em que o trabalho foi excluído pelo usuário | Timezone registado como +00:00 (UTC) |
run_as |
string | O ID do utilizador ou principal de serviço cujas permissões são usadas para executar o trabalho |
Exemplo de consulta
-- Get the most recent version of a job
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
Tarefa de trabalho tableschema
As tarefas de trabalho table são uma dimensão table em mudança lenta (SCD2). Quando uma linha muda, uma nova linha é emitida, substituindo logicamente a anterior.
Table caminho: system.lakeflow.job_tasks
Column nome | Tipo de dados | Description | Observações |
---|---|---|---|
account_id |
string | O ID da conta a que este trabalho pertence | |
workspace_id |
string | A ID do espaço de trabalho ao qual este trabalho pertence | |
job_id |
string | A ID do trabalho | Apenas exclusivo dentro de um único espaço de trabalho |
task_key |
string | A chave de referência para uma tarefa em um trabalho | Apenas único dentro de um único trabalho |
depends_on_keys |
matriz | As chaves de tarefa de todas as dependências anteriores desta tarefa | |
change_time |
carimbo de data/hora | A hora em que a tarefa foi modificada pela última vez | Timezone registado como +00:00 (UTC) |
delete_time |
carimbo de data/hora | A hora em que uma tarefa foi excluída pelo usuário | Timezone registado como +00:00 (UTC) |
Exemplo de consulta
-- Get the most recent version of a job task
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.job_tasks QUALIFY rn=1
Cronograma de execução do trabalho tableschema
A linha do tempo de execução do trabalho table é imutável e completa no momento em que é produzida.
Table caminho: system.lakeflow.job_run_timeline
Column nome | Tipo de dados | Description | Observações |
---|---|---|---|
account_id |
string | O ID da conta a que este trabalho pertence | |
workspace_id |
string | A ID do espaço de trabalho ao qual este trabalho pertence | |
job_id |
string | A ID do trabalho | Essa chave só é exclusiva em um único espaço de trabalho |
run_id |
string | A ID do trabalho executado | |
period_start_time |
carimbo de data/hora | O horário de início da corrida ou do período de tempo |
Timezone informação é registada no final do dado com +00:00 representando UTC |
period_end_time |
carimbo de data/hora | A hora de término para a execução ou para o período de tempo |
Timezone informação é registada no final do dado com +00:00 representando UTC |
trigger_type |
string | O tipo de gatilho que pode disparar uma corrida | Para possíveis values, consulte o tipo de gatilho values |
run_type |
string | O tipo de trabalho executado | Para obter valuespossíveis, consulte Tipo de execução values |
run_name |
string | O nome de execução fornecido pelo usuário associado a esta execução de trabalho | |
compute_ids |
matriz | Matriz que contém as IDs de computação do trabalho para a execução do trabalho pai | Usar para identificar o agrupamento de tarefas usados pelos tipos de execução WORKFLOW_RUN . Para obter outras informações de computação, consulte o job_task_run_timeline table.Não preenchido para linhas emitidas antes do final de agosto de 2024 |
result_state |
string | O resultado da execução do trabalho | Para os possíveis values, veja o Estado do Resultado values |
termination_code |
string | O código de término do trabalho executado | Para obter possíveis values, consulte Código de rescisão values. Não preenchido para linhas emitidas antes do final de agosto de 2024 |
job_parameters |
map | O nível da tarefa parameters usado na execução da tarefa | As configurações de notebook_params preteridas não estão incluídas neste campo. Não preenchido para linhas emitidas antes do final de agosto de 2024 |
Exemplo de consulta
-- This query gets the daily job count for a workspace for the last 7 days:
SELECT
workspace_id,
COUNT(DISTINCT run_id) as job_count,
to_date(period_start_time) as date
FROM system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
-- This query returns the daily job count for a workspace for the last 7 days, distributed by the outcome of the job run.
SELECT
workspace_id,
COUNT(DISTINCT run_id) as job_count,
result_state,
to_date(period_start_time) as date
FROM system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
AND result_state IS NOT NULL
GROUP BY ALL
-- This query returns the average time of job runs, measured in seconds. The records are organized by job. A top 90 and a 95 percentile column show the average lengths of the job's longest runs.
with job_run_duration as (
SELECT
workspace_id,
job_id,
run_id,
CAST(SUM(period_end_time - period_start_time) AS LONG) as duration
FROM
system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
)
SELECT
t1.workspace_id,
t1.job_id,
COUNT(DISTINCT t1.run_id) as runs,
MEAN(t1.duration) as mean_seconds,
AVG(t1.duration) as avg_seconds,
PERCENTILE(t1.duration, 0.9) as p90_seconds,
PERCENTILE(t1.duration, 0.95) as p95_seconds
FROM
job_run_duration t1
GROUP BY ALL
ORDER BY mean_seconds DESC
LIMIT 100
-- This query provides a historical runtime for a specific job based on the `run_name` parameter. For the query to work, you must set the `run_name`.
SELECT
workspace_id,
run_id,
SUM(period_end_time - period_start_time) as run_time
FROM system.lakeflow.job_run_timeline
WHERE
run_type="SUBMIT_RUN"
AND run_name={run_name}
AND period_start_time > CURRENT_TIMESTAMP() - INTERVAL 60 DAYS
GROUP BY ALL
-- This query collects a list of retried job runs with the number of retries for each run.
with repaired_runs as (
SELECT
workspace_id, job_id, run_id, COUNT(*) - 1 as retries_count
FROM system.lakeflow.job_run_timeline
WHERE result_state IS NOT NULL
GROUP BY ALL
HAVING retries_count > 0
)
SELECT
*
FROM repaired_runs
ORDER BY retries_count DESC
LIMIT 10;
Linha do tempo de execução da tarefa de trabalho tableschema
A linha do tempo de execução da tarefa de trabalho table é imutável e completa no momento em que é produzida.
Table caminho: system.lakeflow.job_task_run_timeline
Column nome | Tipo de dados | Description | Observações |
---|---|---|---|
account_id |
string | O ID da conta a que este trabalho pertence | |
workspace_id |
string | A ID do espaço de trabalho ao qual este trabalho pertence | |
job_id |
string | A ID do trabalho | Apenas exclusivo dentro de um único espaço de trabalho |
run_id |
string | A ID da tarefa executada | |
job_run_id |
string | A ID do trabalho executado | Não preenchido para linhas emitidas antes do final de agosto de 2024 |
parent_run_id |
string | O ID da execução pai | Não preenchido para linhas emitidas antes do final de agosto de 2024 |
period_start_time |
carimbo de data/hora | A hora de início da tarefa ou do período de tempo |
Timezone informação é registada no final do dado com +00:00 representando UTC |
period_end_time |
carimbo de data/hora | A hora de término da tarefa ou do período de tempo |
Timezone informação é registada no final do dado com +00:00 representando UTC |
task_key |
string | A chave de referência para uma tarefa em um trabalho | Essa chave só é única em um único trabalho |
compute_ids |
matriz | A matriz compute_ids contém IDs de clusters de trabalho, clusters interativos e SQL warehouses usados pela tarefa de trabalho | |
result_state |
string | O resultado da execução da tarefa de trabalho | Para os possíveis values, veja o Estado do Resultado values |
termination_code |
string | O código de término da tarefa executada | Para obter possíveis values, consulte Código de rescisão values. Não preenchido para linhas emitidas antes do final de agosto de 2024 |
Padrões join comuns
As seções a seguir fornecem consultas de exemplo que destacam padrões join comumente usados no sistema de trabalhos tables.
Join os trabalhos e o cronograma de execução dos trabalhos tables
Enriqueça a execução da tarefa com um nome de tarefa
with jobs as (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM system.lakeflow.jobs QUALIFY rn=1
)
SELECT
job_run_timeline.*
jobs.name
FROM system.lakeflow.job_run_timeline
LEFT JOIN jobs USING (workspace_id, job_id)
Enriqueça o uso com um nome de trabalho
with jobs as (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM system.lakeflow.jobs QUALIFY rn=1
)
SELECT
usage.*,
coalesce(usage_metadata.job_name, jobs.name) as job_name
FROM system.billing.usage
LEFT JOIN jobs ON usage.workspace_id=jobs.workspace_id AND usage.usage_metadata.job_id=jobs.job_id
WHERE
billing_origin_product="JOBS"
Join a linha do tempo de execução do trabalho e o uso tables
Enriqueça cada log de faturamento com metadados de execução de tarefa
SELECT
t1.*,
t2.*
FROM system.billing.usage t1
LEFT JOIN system.lakeflow.job_run_timeline t2
ON t1.workspace_id = t2.workspace_id
AND t1.usage_metadata.job_id = t2.job_id
AND t1.usage_metadata.job_run_id = t2.run_id
AND t1.usage_start_time >= date_trunc("Hour", t2.period_start_time)
AND t1.usage_start_time < date_trunc("Hour", t2.period_end_time) + INTERVAL 1 HOUR
WHERE
billing_origin_product="JOBS"
Calcular o custo por execução de trabalho
Essa consulta se une ao sistema billing.usage
table para calcular um custo por execução de trabalho.
with jobs_usage AS (
SELECT
*,
usage_metadata.job_id,
usage_metadata.job_run_id as run_id,
identity_metadata.run_as as run_as
FROM system.billing.usage
WHERE billing_origin_product="JOBS"
),
jobs_usage_with_usd AS (
SELECT
jobs_usage.*,
usage_quantity * pricing.default as usage_usd
FROM jobs_usage
LEFT JOIN system.billing.list_prices pricing ON
jobs_usage.sku_name = pricing.sku_name
AND pricing.price_start_time <= jobs_usage.usage_start_time
AND (pricing.price_end_time >= jobs_usage.usage_start_time OR pricing.price_end_time IS NULL)
AND pricing.currency_code="USD"
),
jobs_usage_aggregated AS (
SELECT
workspace_id,
job_id,
run_id,
FIRST(run_as, TRUE) as run_as,
sku_name,
SUM(usage_usd) as usage_usd,
SUM(usage_quantity) as usage_quantity
FROM jobs_usage_with_usd
GROUP BY ALL
)
SELECT
t1.*,
MIN(period_start_time) as run_start_time,
MAX(period_end_time) as run_end_time,
FIRST(result_state, TRUE) as result_state
FROM jobs_usage_aggregated t1
LEFT JOIN system.lakeflow.job_run_timeline t2 USING (workspace_id, job_id, run_id)
GROUP BY ALL
ORDER BY usage_usd DESC
LIMIT 100
Get logs de uso para uma tarefa SUBMIT_RUN
SELECT
*
FROM system.billing.usage
WHERE
EXISTS (
SELECT 1
FROM system.lakeflow.job_run_timeline
WHERE
job_run_timeline.job_id = usage_metadata.job_id
AND run_name={run_name}
AND workspace_id={workspace_id}
)
Join o cronograma de execução da tarefa de trabalho e os clusters tables
Enriquecer execuções de tarefas de trabalho com metadados de clusters
with clusters as (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY workspace_id, cluster_id ORDER BY change_time DESC) as rn
FROM system.compute.clusters QUALIFY rn=1
),
exploded_task_runs AS (
SELECT
*,
EXPLODE(compute_ids) as cluster_id
FROM system.lakeflow.job_task_run_timeline
WHERE array_size(compute_ids) > 0
)
SELECT
exploded_task_runs.*,
clusters.*
FROM exploded_task_runs t1
LEFT JOIN clusters t2
USING (workspace_id, cluster_id)
Encontre trabalhos executados em computação multiuso
Essa consulta associa-se ao sistema compute.clusters
table para retornar trabalhos recentes que estão sendo executados em computação geral em vez de computação de tarefas.
with clusters AS (
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, cluster_id ORDER BY change_time DESC) as rn
FROM system.compute.clusters
WHERE cluster_source="UI" OR cluster_source="API"
QUALIFY rn=1
),
job_tasks_exploded AS (
SELECT
workspace_id,
job_id,
EXPLODE(compute_ids) as cluster_id
FROM system.lakeflow.job_task_run_timeline
WHERE period_start_time >= CURRENT_DATE() - INTERVAL 30 DAY
),
all_purpose_cluster_jobs AS (
SELECT
t1.*,
t2.cluster_name,
t2.owned_by,
t2.dbr_version
FROM job_tasks_exploded t1
INNER JOIN clusters t2 USING (workspace_id, cluster_id)
)
SELECT * FROM all_purpose_cluster_jobs LIMIT 10;
Painel de monitorização de empregos do
O painel a seguir usa o sistema tables para ajudá-lo a get a começar a monitorar os seus trabalhos e a integridade operacional. Ele inclui casos de uso comuns, como rastreamento de desempenho de trabalho, monitoramento de falhas e utilização de recursos.
Para obter informações sobre como baixar o painel, consulte Monitorar custos & desempenho do trabalho com o tables do sistema
Solução de problemas
trabalho não está registrado no lakeflow.jobs
table
Se um trabalho não estiver visível no sistema tables:
- O trabalho não foi modificado nos últimos 365 dias
- Modifique qualquer um dos campos do trabalho presentes no schema para emitir um novo registro.
- O emprego foi criado numa região diferente
- Criação recente de empregos (table atraso)
Não consigo encontrar um emprego visto no job_run_timeline
table
Nem todas as tarefas são visíveis em todo o lado. Embora as entradas JOB_RUN
apareçam em todos os tablesrelacionados ao trabalho, WORKFLOW_RUN
(execuções de fluxo de trabalho do bloco de anotações) são registradas apenas em job_run_timeline
e SUBMIT_RUN
(execuções enviadas uma vez) são registradas apenas em ambas as linhas do tempo tables. As execuções não são propagadas para outros sistemas de trabalho, como tables, jobs
ou job_tasks
.
Consulte os tipos de execuçãotable abaixo para uma descrição detalhada de como where cada tipo de execução é visível e acessível.
Tarefa não visível no billing.usage
table
No system.billing.usage
, o usage_metadata.job_id
só é preenchido para trabalhos executados em computação de trabalho ou computação sem servidor.
Além disso, os trabalhos WORKFLOW_RUN
não têm a sua própria atribuição de usage_metadata.job_id
ou de usage_metadata.job_run_id
em system.billing.usage
.
Em vez disso, seu uso de computação é atribuído ao bloco de anotações pai que os acionou.
Isso significa que, quando um notebook inicia uma execução de fluxo de trabalho, todos os custos de computação aparecem no uso do notebook pai, não como um trabalho de fluxo de trabalho separado.
Consulte Analisar metadados de uso para obter mais informações.
Calcular o custo de um trabalho executado em uma computação multiuso
O cálculo preciso de custos para trabalhos executados em computação específica não é possível com uma precisão de 100%. Quando um trabalho é executado em uma computação interativa (multiuso), várias cargas de trabalho, como blocos de anotações, consultas SQL ou outros trabalhos, geralmente são executadas simultaneamente nesse mesmo recurso de computação. Como os recursos do cluster são compartilhados, não há mapeamento 1:1 direto entre os custos de computação e as execuções de tarefas individuais.
Para um acompanhamento preciso do custo do trabalho, o Databricks recomenda a execução de trabalhos em computação dedicada para trabalhos ou computação sem servidor, where, usage_metadata.job_id
e usage_metadata.job_run_id
permitem a atribuição precisa de custos.
Se você precisar usar computação multiuso, poderá:
- Monitore a utilização global do cluster e os custos em
system.billing.usage
com base emusage_metadata.cluster_id
. - Acompanhe as métricas de tempo de execução do trabalho separadamente.
- Considere que qualquer estimativa de custo será aproximada devido aos recursos compartilhados.
Consulte Analisar metadados de uso para obter mais informações sobre atribuição de custos.
Referência values
A secção seguinte inclui referências para selectcolumns em tablesrelacionadas com empregos.
Tipo de gatilho values
Os values possíveis para o trigger_type
column são:
CONTINUOUS
CRON
FILE_ARRIVAL
ONETIME
ONETIME_RETRY
Tipo de execução values
Os values possíveis para o run_type
column são:
Tipo | Description | Localização da interface do usuário | Ponto de extremidade da API | Sistema Tables |
---|---|---|---|---|
JOB_RUN |
Execução de trabalho padrão | Trabalhos & Execuções de Trabalho Interface de Utilizador | /jobs e /jobs/runs pontos de extremidade | empregos, tarefas_emprego, cronograma_execução_emprego, cronograma_execução_tarefa_emprego |
SUBMIT_RUN |
Execução única via POST /jobs/runs/submit | Somente Interface de Execução de Tarefas | /jobs/executa apenas pontos de extremidade | linha_do_tempo_execução_tarefa, linha_do_tempo_execução_tarefa_trabalho |
WORKFLOW_RUN |
Execução iniciada a partir do fluxo de trabalho do bloco de anotações | Não visível | Não acessível | cronograma de execução do trabalho |
Estado do resultado values
Os values possíveis para o result_state
column são:
Estado | Description |
---|---|
SUCCEEDED |
A execução foi concluída com êxito |
FAILED |
A execução foi concluída com um erro |
SKIPPED |
A execução nunca foi realizada porque uma condição não foi atendida |
CANCELLED |
A execução foi cancelada a pedido do usuário |
TIMED_OUT |
A corrida foi interrompida depois de atingir o tempo limite |
ERROR |
A execução foi concluída com um erro |
BLOCKED |
A execução foi bloqueada em uma dependência upstream |
Código de rescisão values
Os values possíveis para o termination_code
column são:
Código de rescisão | Description |
---|---|
SUCCESS |
A execução foi concluída com sucesso |
CANCELLED |
A execução foi cancelada durante a execução pela plataforma Databricks; por exemplo, se a duração máxima de execução foi excedida |
SKIPPED |
A execução nunca foi executada, por exemplo, se a execução da tarefa upstream falhou, a condição do tipo de dependência não foi atendida ou não havia tarefas materiais para executar |
DRIVER_ERROR |
A execução encontrou um erro ao se comunicar com o Spark Driver |
CLUSTER_ERROR |
A execução falhou devido a um erro de cluster |
REPOSITORY_CHECKOUT_FAILED |
Falha ao concluir o checkout devido a um erro ao se comunicar com o serviço de terceiros |
INVALID_CLUSTER_REQUEST |
A execução falhou porque emitiu uma solicitação inválida para iniciar o cluster |
WORKSPACE_RUN_LIMIT_EXCEEDED |
O espaço de trabalho atingiu o limite para o número máximo de execuções ativas simultâneas. Considere agendar as sessões em um intervalo de tempo mais prolongado |
FEATURE_DISABLED |
A execução falhou porque tentou acessar um recurso indisponível para o espaço de trabalho |
CLUSTER_REQUEST_LIMIT_EXCEEDED |
O número de solicitações de criação, inicialização e ampliação do cluster excedeu a taxa alocada limit. Considere distribuir a execução ao longo de um período de tempo maior |
STORAGE_ACCESS_ERROR |
A execução falhou devido a um erro ao acessar o armazenamento de blob do cliente |
RUN_EXECUTION_ERROR |
A execução foi concluída com falhas na tarefa |
UNAUTHORIZED_ERROR |
A execução falhou devido a um problema de permissão ao acessar um recurso |
LIBRARY_INSTALLATION_ERROR |
A execução falhou durante a instalação da biblioteca solicitada pelo usuário. As causas podem incluir, mas não estão limitadas a: A biblioteca fornecida é inválida, não há permissões suficientes para instalar a biblioteca e assim por diante |
MAX_CONCURRENT_RUNS_EXCEEDED |
A execução agendada excede o limit de execuções máximas simultâneas set para a tarefa |
MAX_SPARK_CONTEXTS_EXCEEDED |
A execução é agendada em um cluster que já atingiu o número máximo de contextos que está configurado para criar |
RESOURCE_NOT_FOUND |
Um recurso necessário para executar a execução não existe |
INVALID_RUN_CONFIGURATION |
A execução falhou devido a uma configuração inválida |
CLOUD_FAILURE |
A execução falhou devido a um problema com o provedor de nuvem |
MAX_JOB_QUEUE_SIZE_EXCEEDED |
A execução foi ignorada devido a atingir o tamanho da fila de nível de trabalho limit |