Ingesta de datos de GitHub

Important

Esta característica se encuentra en su versión beta. Los administradores del área de trabajo pueden controlar el acceso a esta característica desde la página Vistas previas . Consulte Administrar versiones preliminares de Azure Databricks.

En esta página se muestra cómo crear una canalización de ingesta de GitHub administrada mediante Databricks Lakeflow Connect.

Requirements

  • Para crear una canalización de ingesta, primero debe cumplir los siguientes requisitos:

    • Su área de trabajo debe estar habilitada para Unity Catalog.

    • La computación sin servidor debe estar habilitada para tu espacio de trabajo. Consulte Requisitos de proceso sin servidor.

    • Para crear una nueva conexión, debe tener privilegios CREATE CONNECTION sobre el metastore. Consulte Administración de privilegios en Unity Catalog.

      Si el conector admite la creación de canalizaciones basadas en la interfaz de usuario, un administrador puede crear la conexión y la canalización al mismo tiempo completando los pasos de esta página. Sin embargo, si los usuarios que crean canalizaciones usan la creación de canalizaciones basadas en API o son usuarios que no son administradores, un administrador debe crear primero la conexión en el Explorador de catálogos. Consulte Conexión a orígenes de ingesta administrados.

    • Para usar una conexión existente, debe tener USE CONNECTION privilegios o ALL PRIVILEGES en el objeto de conexión.

    • Debe tener USE CATALOG privilegios en el catálogo de destino.

    • Debe tener privilegios USE SCHEMA y CREATE TABLE en un esquema existente o privilegios CREATE SCHEMA en el catálogo de destino.

  • Para ingerir desde GitHub, primero debe completar los pasos descritos en Crear una conexión de GitHub.

Creación de una canalización de ingesta

Cada tabla de origen se ingiere en una tabla de transmisión. Para obtener una lista de las tablas de origen admitidas, consulte Datos admitidos.

Interfaz de usuario de Databricks

  1. En la barra lateral del área de trabajo de Azure Databricks, haga clic en Ingesta de datos.
  2. En la página Add data, en Databricks connectors, haga clic en GitHub.
  3. En la página Connection del Asistente para ingesta, seleccione la conexión que almacena las credenciales de acceso de GitHub. Si tiene el privilegio CREATE CONNECTION en el metastore, puede hacer clic en Plus icon. Crear conexión para crear una nueva conexión con los datos de autenticación de Crear una conexión de GitHub.
  4. Haga clic en Next.
  5. En la página Configuración de ingesta , escriba un nombre único para la canalización.
  6. Seleccione un catálogo y un esquema en el que escribir registros de eventos. Si tiene los privilegios USE CATALOG y CREATE SCHEMA sobre el catálogo, puede hacer clic en Icono más. Crear esquema en el menú desplegable para crear un nuevo esquema.
  7. Haga clic en Crear canalización y continúe.
  8. En la página Origen , seleccione las tablas que se van a ingerir.
  9. Haga clic en Guardar y continuar.
  10. En la página Destino , seleccione un catálogo y un esquema en el que cargar datos. Si tiene los privilegios USE CATALOG y CREATE SCHEMA sobre el catálogo, puede hacer clic en Icono más. Crear esquema en el menú desplegable para crear un nuevo esquema.
  11. Haga clic en Guardar y continuar.
  12. (Opcional) En la página Programaciones y notificaciones , haga clic en el icono Más. Crear programación. Establezca la frecuencia para actualizar las tablas de destino.
  13. (Opcional) Haga clic en el icono Más. Agregue una notificación para establecer notificaciones por correo electrónico para que la operación de canalización se complete correctamente o no y, a continuación, haga clic en Guardar y ejecutar canalización.

Agrupaciones de automatización declarativa

Utilice paquetes de automatización declarativa para administrar canalizaciones de GitHub como código. Las agrupaciones pueden contener definiciones de YAML de trabajos y tareas, se administran mediante la CLI de Databricks y se pueden compartir y ejecutar en diferentes áreas de trabajo de destino (como desarrollo, almacenamiento provisional y producción). Para obtener más información, consulte ¿Qué son los conjuntos de automatización declarativos?.

  1. Cree una nueva agrupación mediante la CLI de Databricks:

    databricks bundle init
    
  2. Agregue dos nuevos archivos de recursos al lote:

    • Un archivo de definición de canalización (por ejemplo, resources/github_pipeline.yml). Consulte pipeline.ingestion_definition y ejemplos.
    • Un archivo de definición de trabajo que controla la frecuencia de ingesta de datos (por ejemplo, resources/github_job.yml).
  3. Implemente la canalización mediante la CLI de Databricks:

    databricks bundle deploy
    

Notebook de Databricks

  1. Importe el cuaderno siguiente en el área de trabajo de Azure Databricks:

    Obtención del cuaderno

  2. Deje la celda uno tal cual.

  3. Modifique la celda tres con los detalles de configuración de la canalización. Consulte pipeline.ingestion_definition y ejemplos.

  4. Haga clic en Ejecutar todo.

Ejemplos

Use estos ejemplos para configurar la canalización. El campo source_schema especifica el nombre de la organización de GitHub desde el que se va a ingerir. El destination_table nombre es opcional; si no proporciona uno, el conector usa el source_table nombre.

Ingesta de una sola tabla de origen

Agrupaciones de automatización declarativa

El siguiente archivo de definición de canalización ingiere una sola tabla de origen:

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}

Notebook de Databricks

A continuación se muestra una especificación de canalización de ejemplo que ingiere una sola tabla de origen:

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)

Ingesta de varias tablas de origen

Agrupaciones de automatización declarativa

El siguiente archivo de definición de canalización ingiere varias tablas de origen:

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}

Notebook de Databricks

A continuación se muestra una especificación de canalización de ejemplo que ingiere varias tablas de origen:

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)

Archivo de definición de trabajo por lotes

A continuación se muestra un archivo de definición de trabajo de ejemplo que se usará con Paquetes de Automatización Declarativa. La tarea se ejecuta todos los días, exactamente 24 horas después de la ejecución anterior.

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}

Patrones comunes

Para conocer las configuraciones avanzadas de canalización, consulte Patrones comunes para canalizaciones de ingesta administradas.

Pasos siguientes

Inicie, programe y establezca alertas en su flujo de trabajo. Consulte Tareas comunes de mantenimiento de canalización.

Recursos adicionales