Pobieranie danych z GitHub

Ważna

Ta funkcja jest dostępna w wersji beta. Administratorzy obszaru roboczego mogą kontrolować dostęp do tej funkcji ze strony Podglądy . Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.

Na tej stronie pokazano, jak utworzyć zarządzany potok pozyskiwania danych z GitHub za pomocą Databricks Lakeflow Connect.

Requirements

  • Aby utworzyć potok pozyskiwania, należy najpierw spełnić następujące wymagania:

    • Obszar roboczy musi być włączony dla Unity Catalog.

    • Obliczenia bezserwerowe muszą być aktywowane w obszarze roboczym. Zobacz Wymagania dotyczące obliczeń bezserwerowych.

    • Aby utworzyć nowe połączenie, musisz mieć CREATE CONNECTION uprawnienia do magazynu metadanych. Zobacz Zarządzanie uprawnieniami w Unity Catalog.

      Jeśli łącznik obsługuje tworzenie potoków opartych na interfejsie użytkownika, administrator może utworzyć połączenie i potok w tym samym czasie, wykonując kroki opisane na tej stronie. Jeśli jednak użytkownicy, którzy tworzą potoki, używają tworzenia potoków za pomocą API lub są użytkownikami niebędącymi administratorami, administrator musi najpierw utworzyć połączenie w Eksploratorze Katalogu. Zobacz Połączenie z zarządzanymi źródłami pozyskiwania danych.

    • Aby użyć istniejącego połączenia, musisz mieć USE CONNECTION uprawnienia lub ALL PRIVILEGES w obiekcie połączenia.

    • Musisz mieć USE CATALOG uprawnienia do docelowego katalogu.

    • Musisz mieć przywileje USE SCHEMA i CREATE TABLE do istniejącego schematu lub CREATE SCHEMA w wykazie docelowym.

  • Aby importować z usługi GitHub, musisz najpierw wykonać czynności opisane w artykule Tworzenie połączenia z usługą GitHub.

Tworzenie potoku pozyskiwania danych

Każda tabela źródłowa jest przesyłana do tabeli strumieniowej. Aby uzyskać listę obsługiwanych tabel źródłowych, zobacz Obsługiwane dane.

Interfejs użytkownika usługi Databricks

  1. Na pasku bocznym obszaru roboczego usługi Azure Databricks kliknij pozycję Pozyskiwanie danych.
  2. Na stronie Dodaj dane, w sekcji łączniki Databricks, kliknij pozycję GitHub.
  3. Na stronie Connection w kreatorze importowania wybierz połączenie, które przechowuje poświadczenia dostępu do GitHub. Jeśli masz uprawnienia CREATE CONNECTION do magazynu metadanych, możesz kliknąć ikonę plusa Utwórz połączenie, aby utworzyć nowe połączenie, używając danych uwierzytelniających z Tworzenie połączenia GitHub.
  4. Kliknij przycisk Dalej.
  5. Na stronie Konfiguracja importu wprowadź unikatową nazwę potoku.
  6. Wybierz wykaz i schemat, do których mają być zapisywane dzienniki zdarzeń. Jeśli masz i uprawnienia w katalogu, możesz kliknąć ikonę Plus "Utworzyć schemat" w menu rozwijanym, aby stworzyć nowy schemat.
  7. Kliknij Utwórz kanał i kontynuuj.
  8. Na stronie Źródło wybierz tabele do importowania.
  9. Kliknij przycisk Zapisz i kontynuuj.
  10. Na stronie Miejsce docelowe wybierz wykaz i schemat, do którego mają być ładowane dane. Jeśli masz i uprawnienia w katalogu, możesz kliknąć ikonę Plus "Utworzyć schemat" w menu rozwijanym, aby stworzyć nowy schemat.
  11. Kliknij przycisk Zapisz i kontynuuj.
  12. (Opcjonalnie) Na stronie Harmonogramy i powiadomienia kliknij ikonę Plus. Utwórz harmonogram. Ustaw częstotliwość odświeżania tabel docelowych.
  13. (Opcjonalnie) Kliknij ikonę Plus Dodaj powiadomienie aby ustawić powiadomienia e-mail dotyczące powodzenia lub niepowodzenia operacji potoku, a następnie kliknij pozycję Zapisz i uruchom potok.

Pakiety automatyzacji deklaratywnej

Użyj pakietów automatyzacji deklaratywnej, aby zarządzać potokami GitHub jako kodem. Pakiety mogą zawierać definicje YAML dotyczące prac i zadań, są zarządzane przy użyciu interfejsu wiersza polecenia usługi Databricks i mogą być udostępniane oraz uruchamiane w różnych docelowych obszarach roboczych (takich jak rozwój, środowisko testowe i produkcja). Aby uzyskać więcej informacji, zobacz Co to są pakiety deklaratywne automatyzacji?.

  1. Utwórz nowy pakiet przy użyciu interfejsu wiersza polecenia usługi Databricks:

    databricks bundle init
    
  2. Dodaj dwa nowe pliki zasobów do pakietu:

    • Plik definicji potoku (na przykład resources/github_pipeline.yml). Zobacz pipeline.ingestion_definition i przykłady.
    • Plik definicji zadania, który kontroluje częstotliwość pozyskiwania danych (na przykład resources/github_job.yml).
  3. Wdróż pipeline za pomocą CLI Databricks.

    databricks bundle deploy
    

Notatnik Databricks

  1. Zaimportuj następujący notes do obszaru roboczego usługi Azure Databricks:

    Pobierz laptopa

  2. Pozostaw komórkę jedną bez zmian.

  3. Zmodyfikuj komórkę numer trzy, używając szczegółów konfiguracji przepływu danych. Zobacz pipeline.ingestion_definition i przykłady.

  4. Kliknij Uruchom wszystko.

Examples

Skorzystaj z tych przykładów, aby skonfigurować rurociąg. Pole source_schema określa nazwę organizacji GitHub, z której mają być pobierane dane. Nazwa jest opcjonalna destination_table — jeśli jej nie podasz, łącznik używa source_table nazwy.

Wczytaj pojedynczą tabelę źródłową

Pakiety automatyzacji deklaratywnej

Poniższy plik definicji rurociągu importuje pojedynczą tabelę źródłową.

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}

Notatnik Databricks

Poniżej przedstawiono przykładową specyfikację rurociągu danych, która importuje pojedynczą tabelę źródłową.

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)

Przetwarzanie wielu tabel źródłowych

Pakiety automatyzacji deklaratywnej

Następujący plik definicji potoku importuje wiele tabel źródłowych:

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}

Notatnik Databricks

Poniżej przedstawiono przykładową specyfikację przepływu danych, która importuje wiele tabel źródłowych:

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)

Ogranicz pozyskiwanie danych do określonych repozytoriów

Domyślnie konektor importuje wszystkie repozytoria należące do organizacji. Aby pobierać tylko konkretne repozytoria, ustaw opcję złącza repository_id_selections poniżej github_options na listę numerycznych identyfikatorów repozytoriów GitHub. Opcja obejmuje zakres każdej tabeli o skali repozytorium w potoku, więc ustaw ją na jednym obiekcie w definicji pobierania. Semantykę opcji i tabele, do których się odnosi, znajdziesz w Opcjach Łącznika.

Pakiety automatyzacji deklaratywnej

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

resources:
  pipelines:
    pipeline_github:
      name: github_pipeline
      catalog: ${var.dest_catalog}
      schema: ${var.dest_schema}
      ingestion_definition:
        connection_name: <github-connection>
        objects:
          - table:
              source_schema: <your_org_name>
              source_table: repositories
              destination_catalog: ${var.dest_catalog}
              destination_schema: ${var.dest_schema}
              connector_options:
                github_options:
                  repository_id_selections:
                    - '123456789'
                    - '987654321'

Notatnik Databricks

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",
          "connector_options": {
            "github_options": {
              "repository_id_selections": ["123456789", "987654321"]
            }
          }
        }
      }
    ]
  },
  "channel": "PREVIEW"
}
"""
create_pipeline(pipeline_spec)

Plik definicji zadania zbiorczego

Poniżej przedstawiono przykładowy plik definicji zadania do użycia z pakietami deklaratywnej automatyzacji. Zadanie jest uruchamiane codziennie, dokładnie w odstępie jednego dnia od ostatniego uruchomienia.

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}

Często używane wzorce

Aby zapoznać się z zaawansowanymi konfiguracjami potoków, zobacz Typowe wzorce dla zarządzanych potoków pozyskiwania.

Następne kroki

Rozpocznij, zaplanuj i ustaw alerty w swoim strumieniu danych. Zobacz Typowe zadania zarządzania potokiem.

Dodatkowe zasoby