Partilhar via


Sistema de empregos table referência

Nota

O lakeflowschema era anteriormente conhecido como workflow. O conteúdo de ambos os esquemas é idêntico. Para tornar o lakeflowschema visível, você deve habilitá-lo separadamente.

Este artigo é uma referência sobre como usar o sistema lakeflowtables 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.lakeflowschema 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 e SELECT nos esquemas do sistema. Consulte o acesso ao sistema Granttables.

Vagas disponíveis tables

Todos os sistemas relacionados com empregos tables vivem no system.lakeflowschema. 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 jobstable é 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_timelinetable.

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.usagetable 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.clusterstable 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.

Painel de observação de custos de trabalhos

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.jobstable

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_timelinetable

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.usagetable

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 em usage_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_typecolumn são:

  • CONTINUOUS
  • CRON
  • FILE_ARRIVAL
  • ONETIME
  • ONETIME_RETRY

Tipo de execução values

Os values possíveis para o run_typecolumn 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_statecolumn 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_codecolumn 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