Ingerir dados de GitHub

Importante

Esse recurso está em Beta. Os administradores do workspace podem controlar o acesso a esse recurso na página Visualizações . Consulte Gerenciar visualizações do Azure Databricks.

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

Requirements

  • Para criar um pipeline de ingestão, primeiro você deve atender aos seguintes requisitos:

    • Seu workspace deve estar habilitado para o Unity Catalog.

    • A computação sem servidor deve ser habilitada para seu workspace. Consulte os requisitos de computação sem servidor.

    • Para criar uma nova conexão, você deve ter CREATE CONNECTION privilégios no metastore. Consulte Gerenciar privilégios no Catálogo do Unity.

      Se o conector for compatível com a criação de pipeline baseada na interface do usuário, um administrador poderá criar a conexão e o pipeline ao mesmo tempo seguindo os passos desta página. No entanto, se os usuários que criam pipelines usarem a criação de pipeline baseada em API ou forem usuários não administradores, um administrador deverá primeiro criar a conexão no Gerenciador de Catálogos. Consulte Conectar-se às fontes de ingestão gerenciadas.

    • Para usar uma conexão existente, você deve ter USE CONNECTION privilégios ou ALL PRIVILEGES no objeto de conexão.

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

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

  • Para ingerir de GitHub, primeiro você deve concluir as etapas em Criar uma conexão GitHub.

Criar um pipeline de ingestão

Cada tabela de origem é ingerida em uma tabela de streaming. Para obter uma lista de tabelas de origem com suporte, consulte os dados com suporte.

Interface do usuário do Databricks

  1. Na barra lateral do workspace do Azure Databricks, clique em Ingestão de Dados.
  2. Na página Add data, em Databricks connectors, clique em GitHub.
  3. Na página Connection do assistente de ingestão, selecione a conexão que armazena suas credenciais de acesso GitHub. Se você tiver o privilégio CREATE CONNECTION no metastore, você pode clicar em Plus icon. Criar conexão para criar uma nova conexão com os detalhes de autenticação em Criar uma conexão GitHub.
  4. Clique em Próximo.
  5. Na página de configuração de ingestão, insira um nome exclusivo para o pipeline.
  6. Selecione um catálogo e um esquema para o qual gravar logs de eventos. Se você tiver privilégios USE CATALOG e CREATE SCHEMA no catálogo, poderá clicar em Ícone Sinal de adição. Criar esquema no menu suspenso para criar um novo esquema.
  7. Clique em Criar pipeline e continuar.
  8. Na página Origem , selecione as tabelas a serem ingeridas.
  9. Clique em Salvar e continuar.
  10. Na página Destino , selecione um catálogo e um esquema para carregar dados. Se você tiver privilégios USE CATALOG e CREATE SCHEMA no catálogo, poderá clicar em Ícone Sinal de adição. Criar esquema no menu suspenso para criar um novo esquema.
  11. Clique em Salvar e continuar.
  12. (Opcional) Na página Agendas e notificações , clique no ícone Plus. Criar agendamento. Defina a frequência para atualizar as tabelas de destino.
  13. (Opcional) Clique no ícone Plus. Adicione uma notificação para definir notificações por email para êxito ou falha na operação do pipeline e clique em Salvar e executar pipeline.

Pacotes de Automação Declarativa

Use Pacotes de Automação Declarativa para gerenciar 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 workspaces de destino (como desenvolvimento, preparo e produção). Para obter mais informações, consulte o que são pacotes de automação declarativa?.

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

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

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

    databricks bundle deploy
    

Bloco de anotações do Databricks

  1. Importe o bloco de anotações a seguir para o workspace do Azure Databricks:

    Obter laptop

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

  3. Modifique a terceira célula com os detalhes da configuração do pipeline. Consulte pipeline.ingestion_definition e exemplos.

  4. Clique em Executar tudo.

Exemplos

Use esses exemplos para configurar o pipeline. O campo source_schema especifica o nome da organização GitHub do qual ingerir. O destination_table nome é opcional: se você não fornecer um, o conector usará o source_table nome.

Ingerir uma única tabela de origem

Pacotes de Automação Declarativa

O arquivo de definição de pipeline a seguir 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}

Bloco de anotações do Databricks

A seguir está um exemplo de especificação de um pipeline que ingere uma única tabela 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"
        }
      }
    ]
  },
  "channel": "PREVIEW"
}
"""
create_pipeline(pipeline_spec)

Ingerir múltiplas tabelas de origem

Pacotes de Automação Declarativa

O seguinte arquivo de definição de pipeline ingere várias tabelas 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 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}

Bloco de anotações do Databricks

Veja a seguir um exemplo de especificação de pipeline que ingere várias 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)

Arquivo de definição de trabalho de pacote

Veja a seguir um arquivo de definição de trabalho de exemplo a ser usado com Pacotes de Automação Declarativa. O trabalho é executado 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 pipeline, consulte padrões comuns para pipelines de ingestão gerenciada.

Próximas Etapas 

Inicie, agende e defina alertas no seu fluxo de trabalho. Consulte Tarefas Comuns de Manutenção de Pipeline.

Recursos adicionais