Ingerir dados do GitHub

Importante

Este recurso está em versão Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Visualizações . Ver Gerir as pré-visualizações de Azure Databricks.

Esta página mostra como criar um pipeline de ingestão GitHub gerido usando o Databricks Lakeflow Connect.

Requirements

  • Para criar um pipeline de ingestão, deve primeiro cumprir os seguintes requisitos:

    • Seu espaço de trabalho deve estar habilitado para o Catálogo Unity.

    • A computação sem servidor deve ser habilitada para seu espaço de trabalho. Consulte Requisitos de computação sem servidor.

    • Para criar uma nova ligação, tens de ter CREATE CONNECTION privilégios na metastore. Consulte Gerenciar privilégios no Catálogo Unity.

      Se o conector oferecer suporte à criação de pipeline baseada em interface do usuário, um administrador poderá criar a conexão e o pipeline ao mesmo tempo concluindo as etapas nesta página. No entanto, se os usuários que criam pipelines usam a criação de pipeline baseada em API ou são usuários não administradores, um administrador deve primeiro criar a conexão no Gerenciador de Catálogos. Consulte Conectar-se a fontes de ingestão gerenciadas.

    • Para usar uma ligação existente, deve ter USE CONNECTION privilégios ou ALL PRIVILEGES sobre o objeto de ligação.

    • Você deve ter USE CATALOG privilégios no catálogo de destino.

    • Você deve ter USE SCHEMA e CREATE TABLE privilégios em um esquema existente ou CREATE SCHEMA privilégios no catálogo de destino.

  • Para ingerir a partir de GitHub, deve primeiro completar os passos em Criar uma ligação GitHub.

Criar um fluxo de ingestão

Cada tabela de origem é importada numa tabela de streaming. Para uma lista de tabelas de origem suportadas, veja Dados suportados.

Interface do usuário do Databricks

  1. Na barra lateral do espaço de trabalho do Azure Databricks, clique em Ingestão de Dados.
  2. Na página Add data, em Databricks conectores, clique em GitHub.
  3. Na página Connection do assistente de ingestão, selecione a ligação que armazena as suas credenciais de acesso GitHub. Se tiver o privilégio CREATE CONNECTION na metastore, pode clicar em Plus icon. Criar ligação para criar uma nova ligação com os detalhes de autenticação em Criar uma ligação GitHub.
  4. Clique em Next.
  5. Na página de Configuração de Ingestão , introduza um nome único para o pipeline.
  6. Selecione um catálogo e um esquema para escrever registos de eventos. Se tiver USE CATALOG e CREATE SCHEMA privilégios no catálogo, pode clicar no ícone Mais. Criar esquema no menu suspenso para criar um novo esquema.
  7. Clique em Criar pipeline e continue.
  8. Na página Origem , selecione as tabelas a serem ingeridas.
  9. Clique em Salvar e continuar.
  10. Na página de Destino , selecione um catálogo e um esquema para carregar dados. Se tiver USE CATALOG e CREATE SCHEMA privilégios no catálogo, pode clicar no ícone Mais. Criar esquema no menu suspenso para criar um novo esquema.
  11. Clique em Salvar e continuar.
  12. (Opcional) Na página de Horários e notificações , clique no ícone Plus. Crie um horário. Defina a frequência para atualizar as tabelas de destino.
  13. (Opcional) Clique no ícone Mais. Adicione uma notificação para definir notificações por email para o sucesso ou fracasso da operação do pipeline, depois clique em Guardar e executar pipeline.

Pacotes de Automação Declarativa

Use Declarative Automation Bundles para gerir os pipelines do GitHub como código. Os pacotes podem conter definições YAML de trabalhos e tarefas, são gerenciados usando a CLI do Databricks e podem ser compartilhados e executados em diferentes espaços de trabalho de destino (como desenvolvimento, preparação e produção). Para mais informações, veja O que são os Pacotes de Automação Declarativa?.

  1. Crie um novo pacote usando a CLI do Databricks:

    databricks bundle init
    
  2. Adicione dois novos arquivos de recursos ao pacote:

    • Um ficheiro de definição de pipeline (por exemplo, resources/github_pipeline.yml). Veja pipeline.ingestion_definition e exemplos.
    • Um ficheiro de definição de funções que controla a frequência de ingestão de dados (por exemplo, resources/github_job.yml).
  3. Implante o pipeline usando a CLI do Databricks:

    databricks bundle deploy
    

Caderno de Notas do Databricks

  1. Importe o seguinte caderno para o seu espaço de trabalho Azure Databricks:

    Obter caderno

  2. Deixe a célula um tal como está.

  3. Modifica a célula três com os detalhes da configuração do teu pipeline. Veja pipeline.ingestion_definition e exemplos.

  4. Clique Executar todos os.

Exemplos

Use estes exemplos para configurar o seu pipeline. O campo source_schema especifica o nome da organização do GitHub a partir da qual ingerir dados. O destination_table nome é opcional — se não fornecer um, o conector usa esse source_table nome.

Ingerir uma única tabela de fonte

Pacotes de Automação Declarativa

O seguinte ficheiro de definição de pipeline ingere uma única tabela de origem:

variables:
  dest_catalog:
    default: main
  dest_schema:
    default: ingest_destination_schema

# The main pipeline for github_dab
resources:
  pipelines:
    pipeline_github:
      name: github_pipeline
      catalog: ${var.dest_catalog}
      schema: ${var.dest_schema}
      ingestion_definition:
        connection_name: <github-connection>
        objects:
          # An array of objects to ingest from GitHub. This example ingests the repositories table.
          - table:
              source_schema: <your_org_name>
              source_table: repositories
              destination_catalog: ${var.dest_catalog}
              destination_schema: ${var.dest_schema}

Caderno de Notas do Databricks

Segue-se um exemplo de especificação de pipeline que processa uma única tabela fonte:

pipeline_spec = """
{
  "name": "<pipeline-name>",
  "ingestion_definition": {
    "connection_name": "<github-connection>",
    "objects": [
      {
        "table": {
          "source_schema": "<your_org_name>",
          "source_table": "repositories",
          "destination_catalog": "main",
          "destination_schema": "ingest_destination_schema"
        }
      }
    ]
  },
  "channel": "PREVIEW"
}
"""
create_pipeline(pipeline_spec)

Ingerir múltiplas tabelas de fonte

Pacotes de Automação Declarativa

O seguinte ficheiro de definição de pipeline ingere múltiplas tabelas fonte:

variables:
  dest_catalog:
    default: main
  dest_schema:
    default: ingest_destination_schema

# The main pipeline for github_dab
resources:
  pipelines:
    pipeline_github:
      name: github_pipeline
      catalog: ${var.dest_catalog}
      schema: ${var.dest_schema}
      ingestion_definition:
        connection_name: <github-connection>
        objects:
          # An array of objects to ingest from GitHub. This example ingests the repositories and pull_requests tables.
          - table:
              source_schema: <your_org_name>
              source_table: repositories
              destination_catalog: ${var.dest_catalog}
              destination_schema: ${var.dest_schema}
          - table:
              source_schema: <your_org_name>
              source_table: pull_requests
              destination_catalog: ${var.dest_catalog}
              destination_schema: ${var.dest_schema}

Caderno de Notas do Databricks

Segue-se um exemplo de especificação de pipeline que ingere múltiplas tabelas de origem:

pipeline_spec = """
{
  "name": "<pipeline-name>",
  "ingestion_definition": {
    "connection_name": "<github-connection>",
    "objects": [
      {
        "table": {
          "source_schema": "<your_org_name>",
          "source_table": "repositories",
          "destination_catalog": "main",
          "destination_schema": "ingest_destination_schema"
        }
      },
      {
        "table": {
          "source_schema": "<your_org_name>",
          "source_table": "pull_requests",
          "destination_catalog": "main",
          "destination_schema": "ingest_destination_schema"
        }
      }
    ]
  },
  "channel": "PREVIEW"
}
"""
create_pipeline(pipeline_spec)

Ficheiro de definição de tarefa em conjunto

Segue-se um exemplo de ficheiro de definição de trabalho para usar com Pacotes de Automação Declarativa. O trabalho executa-se todos os dias, exatamente um dia após a última execução.

resources:
  jobs:
    github_dab_job:
      name: github_dab_job

      trigger:
        periodic:
          interval: 1
          unit: DAYS

      email_notifications:
        on_failure:
          - <email-address>

      tasks:
        - task_key: refresh_pipeline
          pipeline_task:
            pipeline_id: ${resources.pipelines.pipeline_github.id}

Padrões comuns

Para configurações avançadas de pipelines, consulte os Padrões comuns para pipelines de ingestão geridos.

Passos seguintes

Inicia, agenda e configura alertas no seu pipeline. Ver Tarefas comuns de manutenção de oleodutos.

Recursos adicionais