Consultar fluxos de trabalho usando o AWS Glue API - AWS Glue

Consultar fluxos de trabalho usando o AWS Glue API

O AWS Glue fornece uma API avançada para gerenciar fluxos de trabalho. É possível recuperar uma visualização estática do fluxo de trabalho ou uma visualização dinâmica de um fluxo de trabalho em execução usando o AWS Glue API. Para ter mais informações, consulte Fluxos de trabalho.

Consultar visualizações estáticas

Use a operação de API GetWorkflow para obter uma visualização estática que indica o design de um fluxo de trabalho. Essa operação retorna um gráfico direcionado que consiste em nós e bordas, onde um nó representa um gatilho, uma tarefa ou um crawler. As bordas definem as relações entre os nós. Eles são representados por conectores (setas) no gráfico no console do AWS Glue.

Também é possível usar essa operação com bibliotecas populares de processamento de gráficos, como NetworkX, igraph, JGraphT e a Java Universal Network/Graph (JUNG) Framework. Como todas essas bibliotecas representam gráficos de forma semelhante, são necessárias transformações mínimas.

A visualização estática retornada por essa API é a visualização mais atualizada de acordo com a definição mais recente de gatilhos associados ao fluxo de trabalho.

Definição do grafo

Um gráfico do fluxo de trabalho G é um par ordenado (N, E), onde N é um conjunto de nós e E, um conjunto de bordas. O é um vértice no gráfico identificado por um número exclusivo. Um nó pode ser do tipo acionador, de trabalho ou crawler. Por exemplo: {name:T1, type:Trigger, uniqueId:1}, {name:J1, type:Job, uniqueId:2}.

A borda é uma tupla de pares do formulário (src, dest), onde src e dest são nós e há uma borda direcionada de src para dest.

Exemplo de como consultar uma visualização estática

Considere um gatilho condicional T, que aciona a tarefa J2 após a conclusão da tarefa J1.

J1 ---> T ---> J2

Nós: J1, T, J2

Bordas: (J1, T), (T, J2)

Consultar visualizações dinâmicas

Use a operação de API GetWorkflowRun para obter uma visualização dinâmica de um fluxo de trabalho em execução. Essa operação retorna a mesma visualização estática do gráfico com os metadados relacionados à execução do fluxo de trabalho.

Para a execução, nós que representam trabalhos na chamada GetWorkflowRun têm uma lista de execuções de trabalhos iniciadas como parte da última execução do fluxo de trabalho. É possível usar essa lista para exibir o status de execução de cada tarefa no próprio gráfico. Para dependências downstream que ainda não foram executadas, esse campo é definido como null. As informações no gráfico deixam você ciente do estado atual de qualquer fluxo de trabalho em determinado momento.

A visualização dinâmica retornada por essa API é baseada na visualização estática que estava presente quando a execução do fluxo de trabalho foi iniciada.

Exemplo de nós de runtime: {name:T1, type: Trigger, uniqueId:1}, {name:J1, type:Job, uniqueId:2, jobDetails:{jobRuns}}, {name:C1, type:Crawler, uniqueId:3, crawlerDetails:{crawls}}

Exemplo 1: visualização dinâmica

O exemplo a seguir ilustra um fluxo de trabalho simples de dois gatilhos.

  • Nós: t1, j1, t2, j2

  • Bordas: (t1, j1), (j1, t2), (t2, j2)

A resposta GetWorkflow contém o seguinte.

{ Nodes : [ { "type" : Trigger, "name" : "t1", "uniqueId" : 1 }, { "type" : Job, "name" : "j1", "uniqueId" : 2 }, { "type" : Trigger, "name" : "t2", "uniqueId" : 3 }, { "type" : Job, "name" : "j2", "uniqueId" : 4 } ], Edges : [ { "sourceId" : 1, "destinationId" : 2 }, { "sourceId" : 2, "destinationId" : 3 }, { "sourceId" : 3, "destinationId" : 4 } }

A resposta GetWorkflowRun contém o seguinte.

{ Nodes : [ { "type" : Trigger, "name" : "t1", "uniqueId" : 1, "jobDetails" : null, "crawlerDetails" : null }, { "type" : Job, "name" : "j1", "uniqueId" : 2, "jobDetails" : [ { "id" : "jr_12334", "jobRunState" : "SUCCEEDED", "errorMessage" : "error string" } ], "crawlerDetails" : null }, { "type" : Trigger, "name" : "t2", "uniqueId" : 3, "jobDetails" : null, "crawlerDetails" : null }, { "type" : Job, "name" : "j2", "uniqueId" : 4, "jobDetails" : [ { "id" : "jr_1233sdf4", "jobRunState" : "SUCCEEDED", "errorMessage" : "error string" } ], "crawlerDetails" : null } ], Edges : [ { "sourceId" : 1, "destinationId" : 2 }, { "sourceId" : 2, "destinationId" : 3 }, { "sourceId" : 3, "destinationId" : 4 } }

Exemplo 2: vários trabalhos com um acionador condicional

O exemplo a seguir mostra um fluxo de trabalho com várias tarefas e um gatilho condicional (t3).

Consider Flow: T(t1) ---> J(j1) ---> T(t2) ---> J(j2) | | | | >+------> T(t3) <-----+ | | J(j3) Graph generated: Nodes: t1, t2, t3, j1, j2, j3 Edges: (t1, j1), (j1, t2), (t2, j2), (j1, t3), (j2, t3), (t3, j3)