OpenLineage integração

Integre-se ao OpenLineage para capturar, ingerir e processar a linhagem produzida por sistemas que emitem automaticamente eventos do OpenLineage e a linhagem personalizada que é documentada usando cargas úteis do OpenLineage.

OpenLineage em toda a plataforma IBM watsonx

IBM utiliza o OpenLineage como padrão aberto para a troca de informações sobre a linhagem de dados em toda a plataforma watsonx. OpenLineage é uma especificação aberta e impulsionada pela comunidade. Substitui os formatos de linhagem proprietários por um modelo comum. Essa abordagem permite que os metadados de linhagem sejam trocados de forma consistente entre produtos e com sistemas externos que emitem eventos d OpenLineage. Ele oferece uma visão unificada da linhagem tanto para dados estruturados quanto para dados não estruturados.

Veja como os diferentes produtos da linha “ watsonx ” funcionam em conjunto com a linha “ OpenLineage: ”

watsonx.data
Atua como produtor de " OpenLineage ". Esses eventos registram a linhagem de execução para cargas de trabalho de análise estruturada. Eles descrevem os conjuntos de dados de origem, as tarefas executadas e os resultados gerados. Consulte “Integração com o IBM ” em Manta Data Lineage.
watsonx.data integration
Atua como um gerador de tarefas ( OpenLineage ) para fluxos de trabalho de ingestão e transformação. Isso inclui pipelines que processam dados não estruturados. Os eventos emitidos descrevem a movimentação e a transformação de dados no momento da execução. Consulte o Lineage para dados não estruturados.
watsonx.data intelligence
Atua como o consumidor do serviço OpenLineage. Ele importa e processa eventos do ` OpenLineage ` gerados por produtos da ` IBM `, ferramentas de terceiros e mapeamentos de linhagem personalizados, incluindo linhagens personalizadas para sistemas proprietários e legados. Isso correlaciona esses eventos com os dados de linhagem coletados por scanners automatizados. O resultado é uma visão completa da linhagem.

Esse modelo produtor-consumidor representa a linhagem ao longo do ciclo de vida dos dados. Abrange a captação, a transformação, a análise e o consumo posterior. O modelo é compatível com ferramentas externas e sistemas personalizados ou legados. Os metadados do Lineage permanecem portáteis e interoperáveis entre plataformas.

Visão geral da integração do OpenLineage no watsonx.data intelligence

Ao integrar-se ao OpenLineage,, você pode ingerir dados de sistemas e tecnologias personalizadas que não são compatíveis, mas que são usados em seu fluxo de dados. Como resultado, você tem uma visão completa, de ponta a ponta, de seus dados sobre linhagem. Por exemplo, você pode fazer a integração com OpenLineage nos seguintes casos:

  • Seus dados fluem pelas fontes de dados compatíveis e pelas fontes de dados que não são compatíveis no momento para importação de linhagem. Ao importar eventos, seu fluxo de dados fica completo e é mais fácil de acompanhar. Por exemplo, você tem um banco de dados como fonte e uma ferramenta ETL personalizada criada internamente e que move os dados para Amazon S3. Ao importar um evento e criar um mapeamento para ele, você pode conectar corretamente os ativos de origem e de destino.
  • Você está usando uma tecnologia que não é compatível com a importação de linhagem, por exemplo, Azure Data Factory. Com os eventos do OpenLineage, você pode adicionar suas atividades à sua linhagem.

Tipos de eventos que são processados

Os seguintes tipos de eventos do OpenLineage são processados:

  • Eventos de trabalho. Eles representam uma linhagem estática e em tempo de projeto. Os eventos de trabalho são ingeridos, armazenados e processados. As entradas e saídas em nível de trabalho são recuperadas, juntamente com a linhagem em nível de coluna, se a faceta de linhagem de coluna estiver presente.
  • Eventos de corrida. Eles representam uma linhagem de tempo de execução. Os eventos de execução são ingeridos, armazenados e processados. Eles descrevem as mudanças de estado da execução de um trabalho, início, conclusão e falha. As entradas e saídas em nível de trabalho são recuperadas, juntamente com a linhagem em nível de coluna, se a faceta de linhagem de coluna estiver presente.

As cargas úteis do OpenLineage são fornecidas no formato JSON.

Métodos de ingestão

Você pode ingerir eventos do OpenLineage usando os seguintes métodos:

  • HTTP Ingestão de API. Os eventos do OpenLineage podem ser recebidos diretamente por meio de pontos de extremidade autenticados do HTTPS.
  • Carregamento de um arquivo.zip. Você pode carregar um arquivo.zip que contém arquivos.json com eventos. Você pode carregar o arquivo na interface de usuário do produto ou usar a API.

Regras de mapeamento

Para processar corretamente os dados referenciados nos eventos do site OpenLineage, crie regras de mapeamento. Cada regra define como as cargas úteis específicas do fornecedor são mapeadas para os tipos de ativos na linhagem. Os mapeamentos são baseados no namespace, portanto, são necessários três mapeamentos para um evento. Os mapeamentos padrão para tecnologias conhecidas já estão presentes no produto. Criar novos mapeamentos para tecnologias personalizadas. Quando os conjuntos de dados referenciados nos mapeamentos são mapeados para fontes de dados conhecidas usando definições de fontes de dados, as bordas do OpenLineage são conectadas a dados descobertos por conectores padrão. Como resultado, é criado um gráfico de linhagem integrado e de ponta a ponta, capturando o tempo de projeto, o tempo de execução e os artefatos descobertos automaticamente.

Para obter mais informações sobre mapeamentos, consulte Mapeamento de eventos OpenLineage.

Ingestão de eventos do site OpenLineage

Os eventos OpenLineage devem ser fornecidos no formato JSON e estar em conformidade com a especificação OpenLineage. Para obter detalhes, consulte OpenLineage Integrations.

Ingestão de cargas úteis usando a API HTTP

Com o método de API ` HTTP `, você pode inserir um único evento ou um lote (matriz) de eventos. Com este método, você só pode inserir eventos de corrida. Para importar eventos de tarefa, envie um arquivo.zip com a tarefa de importação de metadados.

Pré-requisitos
Para usar o método da API HTTP, você deve ter a função de administrador de linhagem ou uma função personalizada com a permissão Gerenciar linhagem de dados.

Além disso, é necessária uma chave API de usuário. Você pode gerenciá-las no perfil da sua conta em Perfil e configurações > Chave API do usuário. Para obter detalhes, consulte Gerenciando a chave API do usuário.

Ponto de extremidade da API para inserir um único evento
O ponto de extremidade da API a seguir é usado para inserir um único evento:

  • HTTP método: POST
  • HTTP URL: https://<HOST>/gov_lineage/v2/lineage_events/openlineage
  • Carga útil: carga útil JSON do evento OpenLineage válida

Para enviar eventos para esta API, utilize os produtores do OpenLineage ou as bibliotecas de cliente, como, por exemplo, a de Java. Acesse a seção "Configuração" de uma biblioteca de clientes para obter detalhes, incluindo a configuração de autenticação, como, por exemplo, o Provedor de Tokens JWT.

Ponto de extremidade da API para ingestão de eventos em lote
O seguinte ponto de extremidade da API é utilizado para a ingestão de eventos do ` OpenLineage ` em lote:

  • HTTP método: POST
  • HTTP URL: https://<HOST>/gov_lineage/v2/lineage_events/openlineage/batch
  • Carga útil: uma matriz de cargas úteis JSON válidas para eventos do tipo ` OpenLineage `

Carregamento de arquivo.zip

Você pode compactar o arquivo.json que contém o evento OpenLineage em um arquivo.zip e carregar o arquivo.zip durante a importação de metadados. O arquivo.zip pode conter um ou mais eventos. Compacte os eventos diretamente no arquivo.zip, de modo que ele tenha a seguinte estrutura:

openlineage-events.zip
├─ job_run_1.json
└─ job_run_2.json

Você pode carregar o arquivo.zip usando a interface de usuário do produto ou usando APIs.

  • Na interface de usuário do produto, carregue o arquivo.zip como uma entrada externa durante a importação de metadados. Consulte Criação de importações de metadados.
    • É possível incluir ou excluir ativos usando namespaces de tarefa em eventos OpenLineage. A entrada inteira é avaliada como uma expressão regular. Valores de exemplo:
      • myPrestoApp1NamespacemyPrestoApp1Namespace: todos os eventos com o namespace "job".
      • mySparkApp[1-5]Namespace: todos os eventos cujo namespace de tarefa comece com mySparkApp1Namespace e termine com um dígito entre 1 e 5.
  • Para carregar o arquivo.zip usando APIs, siga estas etapas:
    1. Crie um ativo para o arquivo.zip. Consulte Criar um ativo.
    2. Faça upload do arquivo.zip como anexo de um projeto para o qual deseja importar metadados. Consulte Criar um anexo.
    3. Crie uma definição de fonte de dados do tipo " OpenLineage ".
    4. Crie um recurso de importação de metadados, selecione a definição da fonte de dados que você criou e indique o arquivo.zip anexado como arquivo de entrada. No parâmetro file_list , forneça o ID do arquivo.zip. Consulte Criar um ativo de importação de metadados.
    5. Crie um trabalho para o ativo de importação de metadados. Consulte Criar um novo trabalho.
    6. Execute o trabalho de importação de metadados. Consulte Iniciar uma execução para um trabalho.

Monitoramento de eventos d OpenLineage

Use o painel de eventos "Processed OpenLineage " para monitorar os eventos recebidos pelo sistema por meio da API e acompanhar seu status de processamento. Para abrir o painel, acesse Dados > Linhagem de dados > Mapa de linhagem > Mapa de OpenLineage. Nesta tela, você pode verificar o volume de eventos e ver se cada evento foi processado com sucesso, falhou, foi rejeitado ou ainda está pendente.

Para verificar o status dos eventos importados em um arquivo.zip por meio de uma tarefa de importação de metadados, verifique o status dessa tarefa específica.

Use esta visualização centralizada dos eventos do ` OpenLineage ` para:

  • Verifique os eventos enviados por meio da API.
  • Resolva problemas de ingestão identificando eventos com falha, rejeitados ou pendentes.
  • Monitore o desempenho geral do fluxo de processamento analisando as tendências ao longo do tempo.

A tabela de detalhes mostra os eventos d OpenLineage, agrupados por execução de tarefa. O identificador do evento corresponde a uma única execução de tarefa, que pode incluir vários eventos. O status do processamento reflete o resultado acumulado do processamento para essa execução da tarefa. Para visualizar as mensagens de erro dos eventos com falha ou rejeitados, expanda o identificador do evento e clique em “Exibir” para o evento selecionado.

Linhagem de design e linhagem de tempo de execução

Você pode importar a linhagem de design e de tempo de execução. Saiba mais sobre as diferenças, sobre as versões de linhagem para ambos os tipos e como os dados podem ser reimportados.

linhagem de design

A linhagem de design representa o fluxo planejado ou pretendido de dados por meio do seu sistema, conforme definido durante a fase de design, antes do processamento real. Ele mostra uma estrutura estática de seus dados, por exemplo, trabalhos de ETL, procedimentos armazenados no banco de dados, código SQL. A linhagem de design ajuda a entender a estrutura e os relacionamentos pretendidos em seu ecossistema de dados.

As definições de transformação e, portanto, as informações de design, mudam com o tempo. Para manter o controle dessas alterações, são criadas e salvas versões da linhagem. Consulte Versões anteriores da linhagem de dados.

A linhagem de design também pode ser reimportada quando necessário, para substituir uma versão antiga pela nova.

Linhagem de tempo de execução

A linhagem de tempo de execução captura o fluxo real de dados à medida que eles passam pelo sistema durante a execução. Ele representa o que realmente aconteceu com seus dados durante o processamento. Ele mostra dados dinâmicos, como os trabalhos que foram executados. A linhagem de tempo de execução ajuda a verificar se os dados estão fluindo conforme o esperado e a solucionar problemas quando isso não acontece.

O conceito de controle de versão da linhagem não é tão relevante para a linhagem de tempo de execução. No entanto, você ainda pode ver quando a linhagem de tempo de execução ocorreu. Quando você visualiza o histórico de linhagem, a linhagem de tempo de execução está disponível para os últimos 30 dias a partir da instância de tempo selecionada no histórico de linhagem. O valor comparado com esse intervalo é o eventTime valor do COMPLETE evento da execução da tarefa que indica quando a execução da tarefa foi concluída.

Não é possível reimportar a linhagem de tempo de execução. Quando a nova linhagem de tempo de execução é processada, a antiga não é afetada. Se você quiser substituir a linhagem de tempo de execução, exclua a versão existente e importe uma nova.

Limitações

  • Para eventos de linhagem de tempo de execução, o runId valor na carga útil do evento deve ser um UUID válido.
  • Por padrão, são exibidos apenas os trabalhos concluídos nos últimos 30 dias. Se for utilizada a linha de tempo histórica, o intervalo de 30 dias é calculado a partir do momento selecionado no passado. As informações sobre quando a execução da tarefa foi concluída são obtidas a partir do eventTime parâmetro do COMPLETE evento da execução da tarefa.

Máscaras

OpenLineage os eventos podem, opcionalmente, incluir facetas. As facetas fornecem informações descritivas adicionais, como o esquema do conjunto de dados, o código-fonte e as métricas de tempo de execução. Quando o evento contém facetas, esses detalhes adicionais são refletidos na linhagem. As facetas são opcionais.

Há suporte para as seguintes facetas:

Limitações

Exportação da linhagem para o formato d OpenLineage

Você pode exportar sua árvore genealógica para o formato OpenLineage e utilizá-la em qualquer ferramenta compatível com esse padrão. Para obter mais detalhes, consulte Exportação da linhagem de dados para o formato d OpenLineage.

Saiba Mais