Daten aus GitHub erfassen

Important

Dieses Feature befindet sich in der Betaversion. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Manage Azure Databricks Previews.

Diese Seite zeigt, wie Sie mithilfe von Databricks Lakeflow Connect eine verwaltete GitHub Aufnahmepipeline erstellen.

Requirements

  • Um eine Aufnahmepipeline zu erstellen, müssen Sie zuerst die folgenden Anforderungen erfüllen:

    • Ihr Arbeitsbereich muss für Unity Catalog aktiviert sein.

    • Serverlose Berechnung muss für Ihren Arbeitsbereich aktiviert sein. Siehe Serverlose Computeanforderungen.

    • Wenn Sie eine neue Verbindung erstellen möchten: Sie müssen über Berechtigungen auf den Metastore CREATE CONNECTION verfügen. Weitere Informationen finden Sie unter Verwalten von Berechtigungen in Unity Catalog.

      Wenn der Connector die benutzeroberflächenbasierte Pipelineerstellung unterstützt, kann ein Administrator die Verbindung und die Pipeline gleichzeitig erstellen, indem er die Schritte auf dieser Seite ausführt. Wenn die Benutzer, die Pipelines erstellen, jedoch API-basierte Pipelineerstellung verwenden oder Nicht-Administratorbenutzer sind, muss ein Administrator zuerst die Verbindung im Katalog-Explorer erstellen. Siehe Herstellen einer Verbindung mit verwalteten Aufnahmequellen.

    • Wenn Sie beabsichtigen, eine vorhandene Verbindung zu verwenden: Sie müssen über USE CONNECTION Privilegien oder ALL PRIVILEGES Berechtigungen für das Verbindungsobjekt verfügen.

    • Sie müssen über USE CATALOG Berechtigungen für den Zielkatalog verfügen.

    • Sie müssen über USE SCHEMA- und CREATE TABLE-Berechtigungen für ein vorhandenes Schema oder CREATE SCHEMA-Berechtigungen für den Zielkatalog verfügen.

  • Um Daten aus GitHub zu importieren, müssen Sie zunächst die Schritte unter Eine GitHub-Verbindung erstellen abschließen.

Erstellen einer Aufnahmepipeline

Jede Quelltabelle wird in eine Streamingtabelle eingelesen. Eine Liste der unterstützten Quelltabellen finden Sie unter "Unterstützte Daten".

Databricks UI

  1. Klicken Sie in der Randleiste des Azure Databricks-Arbeitsbereichs auf "Datenaufnahme".
  2. Klicken Sie auf der Seite Daten hinzufügen unter Databricks-Connectors auf GitHub.
  3. Wählen Sie auf der Seite Verbindung des Erfassungsassistenten die Verbindung aus, in der Ihre GitHub-Zugangsdaten gespeichert sind. Wenn Sie über das CREATE CONNECTION-Privileg für den Metastore verfügen, Sie können auf Plus icon. Verbindung erstellen klicken, um eine neue Verbindung mit den Authentifizierungsdetails in Create a GitHub connection zu erstellen.
  4. Klicke auf Weiter.
  5. Geben Sie auf der Seite "Einrichtung der Datenaufnahme" einen eindeutigen Namen für die Pipeline ein.
  6. Wählen Sie einen Katalog und ein Schema aus, in das Ereignisprotokolle geschrieben werden sollen. Wenn Sie über die - und -Berechtigungen im Katalog verfügen, können Sie auf das Plus-Symbol im Dropdown-Menü klicken, um ein neues Schema zu erstellen.
  7. Klicken Sie auf "Pipeline erstellen", und fahren Sie fort.
  8. Wählen Sie auf der Seite "Quelle" die aufzunehmenden Tabellen aus.
  9. Klicken Sie auf Speichern und fortfahren.
  10. Wählen Sie auf der Seite "Ziel " einen Katalog und ein Schema aus, in das Daten geladen werden sollen. Wenn Sie über die - und -Berechtigungen im Katalog verfügen, können Sie auf das Plus-Symbol im Dropdown-Menü klicken, um ein neues Schema zu erstellen.
  11. Klicken Sie auf Speichern und fortfahren.
  12. (Optional) Klicken Sie auf der Seite "Zeitpläne und Benachrichtigungen " auf das Plussymbol. Zeitplan erstellen. Legen Sie die Häufigkeit fest, mit der die Zieltabellen aktualisiert werden.
  13. (Optional) Klicken Sie auf das Plussymbol. Fügen Sie eine Benachrichtigung hinzu, um E-Mail-Benachrichtigungen für Erfolg oder Fehler des Pipelinevorgangs festzulegen, und klicken Sie dann auf " Speichern und Ausführen der Pipeline".

Deklarative Automatisierungspakete

Verwenden Sie deklarative Automatisierungspakete, um GitHub Pipelines als Code zu verwalten. Bundles können YAML-Definitionen von Aufträgen und Aufgaben enthalten, mithilfe der Databricks CLI verwaltet und in verschiedenen Zielarbeitsbereichen (z. B. Entwicklung, Staging und Produktion) freigegeben und ausgeführt werden. Weitere Informationen finden Sie unter Was sind deklarative Automatisierungs-Bundles?.

  1. Erstellen Eines neuen Bündels mithilfe der Databricks CLI:

    databricks bundle init
    
  2. Fügen Sie dem Bundle zwei neue Ressourcendateien hinzu:

    • Eine Pipelinedefinitionsdatei (z. B resources/github_pipeline.yml. ). Siehe pipeline.ingestion_definition und Beispiele.
    • Eine Auftragsdefinitionsdatei, die die Häufigkeit der Datenaufnahme steuert (z. B. resources/github_job.yml).
  3. Stellen Sie die Pipeline mithilfe der Databricks CLI bereit:

    databricks bundle deploy
    

Databricks-Notizbuch

  1. Importieren Sie das folgende Notizbuch in Ihren Azure Databricks-Arbeitsbereich:

    Notebook abrufen

  2. Lassen Sie Zelle 1 unverändert.

  3. Ändern Sie die dritte Zelle mit den Details der Pipelinekonfiguration. Siehe pipeline.ingestion_definition und Beispiele.

  4. Klicken Sie auf Alle ausführen.

Beispiele

Verwenden Sie diese Beispiele, um Ihre Pipeline zu konfigurieren. Das Feld source_schema gibt den Namen der GitHub-Organisation an, aus der Daten erfasst werden sollen. Der destination_table Name ist optional – wenn Sie keinen angeben, verwendet der Connector den source_table Namen.

Einlesen einer einzelnen Quelltabelle

Deklarative Automatisierungspakete

Die folgende Pipeline-Definitionsdatei nimmt eine einzelne Quelltabelle auf.

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-Notizbuch

Es folgt eine Beispiel-Pipelinespezifikation, die eine einzelne Quelltabelle importiert:

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)

Eingabe mehrerer Quelltabellen

Deklarative Automatisierungspakete

Die folgende Pipelinedefinitionsdatei nimmt mehrere Quelltabellen ein:

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-Notizbuch

Im Folgenden sehen Sie eine Beispielpipelinespezifikation, die mehrere Quelltabellen verarbeitet:

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)

Bündel-Auftragsdefinitionsdatei

Es folgt eine Beispielauftragsdefinitionsdatei, die mit deklarativen Automatisierungspaketen verwendet werden soll. Der Job wird jeden Tag ausgeführt, genau einen Tag nach der letzten Ausführung.

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}

Allgemeine Muster

Weitere Informationen zu erweiterten Pipelinekonfigurationen finden Sie unter "Allgemeine Muster für verwaltete Aufnahmepipelinen".

Nächste Schritte

Starten Sie, planen Sie und legen Sie Benachrichtigungen für Ihre Pipeline fest. Siehe allgemeine Pipelinewartungsaufgaben.

Weitere Ressourcen