Mata in data från GitHub

Viktigt!

Den här funktionen finns i Beta. Arbetsyteadministratörer kan styra åtkomsten till den här funktionen från sidan Förhandsversioner . Se Hantera förhandsversioner av Azure Databricks.

Den här sidan visar hur du skapar en hanterad GitHub inmatningspipeline med Databricks Lakeflow Connect.

Requirements

  • Om du vill skapa en inmatningspipeline måste du först uppfylla följande krav:

    • Arbetsytan måste vara aktiverad för Unity Catalog.

    • Serverlös beräkning måste vara aktiverad för din arbetsyta. Se Krav för serverlös beräkning.

    • Om du vill skapa en ny anslutning måste du ha CREATE CONNECTION behörighet för metaarkivet. Se avsnitt Hantera privilegier i Unity Catalog.

      Om anslutningsappen stöder UI-baserad pipelineredigering kan en administratör skapa anslutningen och pipelinen samtidigt genom att slutföra stegen på den här sidan. Men om de användare som skapar pipelines använder API-baserad pipelineredigering eller inte är administratörsanvändare, måste en administratör först skapa anslutningen i Catalog Explorer. Se Anslut till hanterade inmatningskällor.

    • Om du vill använda en befintlig anslutning måste du ha USE CONNECTION behörigheter eller ALL PRIVILEGES på anslutningsobjektet.

    • Du måste ha USE CATALOG behörigheter i målkatalogen.

    • Du måste ha USE SCHEMA och CREATE TABLE behörigheter för ett befintligt schema eller CREATE SCHEMA behörigheter i målkatalogen.

  • Om du vill mata in från GitHub måste du först slutföra stegen i Skapa en GitHub anslutning.

Skapa en inmatningspipeline

Varje källtabell matas in i en strömmande tabell. En lista över källtabeller som stöds finns i Data som stöds.

Databricks-användargränssnitt

  1. I sidofältet på Azure Databricks-arbetsytan klickar du på Datainmatning.
  2. På sidan Lägg till data under Databricks-anslutningsappar klickar du på GitHub.
  3. På sidan Connection i inmatningsguiden väljer du den anslutning som lagrar dina GitHub åtkomstautentiseringsuppgifter. Om du har behörigheten CREATE CONNECTION i metaarkivet, du kan klicka på Plus icon. Skapa anslutning för att skapa en ny anslutning med autentiseringsinformationen i Skapa en GitHub anslutning.
  4. Klicka på Nästa.
  5. På installationssidan för inmatning anger du ett unikt namn för pipelinen.
  6. Välj en katalog och ett schema att skriva händelseloggar till. Om du har USE CATALOG och CREATE SCHEMA behörigheter i katalogen kan du klicka på Plus-ikonen. Skapa ett schema i den nedrullningsbara menyn för att skapa ett nytt schema.
  7. Klicka på Skapa pipeline och fortsätt.
  8. På sidan Källa väljer du de tabeller som ska matas in.
  9. Klicka på Spara och fortsätt.
  10. På sidan Mål väljer du en katalog och ett schema att läsa in data i. Om du har USE CATALOG och CREATE SCHEMA behörigheter i katalogen kan du klicka på Plus-ikonen. Skapa ett schema i den nedrullningsbara menyn för att skapa ett nytt schema.
  11. Klicka på Spara och fortsätt.
  12. (Valfritt) På sidan Scheman och meddelanden klickar du på plusikonen. Skapa schema. Ange frekvensen för att uppdatera måltabellerna.
  13. (Valfritt) Klicka på Plus-ikonen. Lägg till meddelande för att ange e-postaviseringar för lyckade eller misslyckade pipelineåtgärder och klicka sedan på Spara och kör pipeline.

Deklarativa automationspaket

Använd deklarativa automatiseringspaket för att hantera GitHub pipelines som kod. Paket kan innehålla YAML-definitioner av jobb och uppgifter, hanteras med Databricks CLI och kan delas och köras på olika målarbetsytor (till exempel utveckling, mellanlagring och produktion). Mer information finns i Vad är deklarativa automatiseringspaket?.

  1. Skapa ett nytt paket med Databricks CLI:

    databricks bundle init
    
  2. Lägg till två nya resursfiler i paketet:

    • En pipelinedefinitionsfil (till exempel resources/github_pipeline.yml). Se pipeline.ingestion_definition och exempel.
    • En jobbdefinitionsfil som styr datainmatningsfrekvensen (till exempel resources/github_job.yml).
  3. Distribuera pipelinen med Databricks CLI:

    databricks bundle deploy
    

Databricks-anteckningsbok

  1. Importera följande notebook-fil till din Azure Databricks-arbetsyta:

    Hämta anteckningsbok

  2. Lämna cell ett oförändrad.

  3. Ändra cell tre med information om pipelinekonfigurationen. Se pipeline.ingestion_definition och exempel.

  4. Klicka på Kör alla.

Exempel

Använd de här exemplen för att konfigurera din pipeline. Fältet source_schema anger det GitHub organisationsnamn som ska matas in från. Namnet destination_table är valfritt – om du inte anger något använder anslutningsappen source_table namnet.

Mata in en tabell med en enda källa

Deklarativa automationspaket

Följande pipelinedefinitionsfil matar in en enda källtabell:

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}

Databricks-anteckningsbok

Följande är ett exempel på en pipelinespecifikation som matar in en enda källtabell:

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)

Mata in flera källtabeller

Deklarativa automationspaket

Följande pipelinedefinitionsfil matar in flera källtabeller:

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}

Databricks-anteckningsbok

Följande är ett exempel på en pipelinespecifikation som matar in flera källtabeller:

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)

Paketjobbsdefinitionsfil

Följande är ett exempel på en jobbdefinitionsfil som ska användas med deklarativa Automation-paket. Jobbet körs varje dag, precis 24 timmar efter den senaste körningen.

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}

Vanliga mönster

För avancerade pipelinekonfigurationer, se Vanliga mönster för hanterade inmatningspipelines.

Nästa steg

Starta, schemalägga och ange aviseringar för din pipeline. Se Vanliga pipelineunderhållsuppgifter.

Ytterligare resurser