GitHubからデータを取り込む

Important

この機能は ベータ版です。 ワークスペース管理者は、[ プレビュー] ページからこの機能へのアクセスを制御できます。 Manage Azure Databricks プレビューを参照してください。

このページでは、Databricks Lakeflow Connect を使用してマネージド GitHub インジェスト パイプラインを作成する方法について説明します。

Requirements

  • インジェスト パイプラインを作成するには、まず次の要件を満たす必要があります。

    • ワークスペースは、Unity Catalog に対して有効にする必要があります。

    • ワークスペースに対してサーバーレス コンピューティングを有効にする必要があります。 サーバーレス コンピューティング要件を参照してください。

    • 新しい接続を作成するには、メタストアに対する CREATE CONNECTION 特権が必要です。 「Unity Catalog の特権の管理」を参照してください。

      コネクタが UI ベースのパイプライン作成をサポートしている場合、管理者は、このページの手順を完了することで、接続とパイプラインを同時に作成できます。 ただし、パイプラインを作成するユーザーが API ベースのパイプライン作成を使用している場合、または管理者以外のユーザーである場合は、まず管理者がカタログ エクスプローラーで接続を作成する必要があります。 「マネージド インジェスト ソースへの接続」を参照してください。

    • 既存の接続を使用するには、接続オブジェクトに対する USE CONNECTION 特権または ALL PRIVILEGES が必要です。

    • ターゲット カタログに対する USE CATALOG 特権が必要です。

    • 既存のスキーマに対する USE SCHEMA 権限と CREATE TABLE 権限、またはターゲット カタログに対する CREATE SCHEMA 権限が必要です。

  • GitHubから取り込むには、最初に GitHub 接続を作成するの手順を完了する必要があります。

インジェスト パイプラインを作成する

各ソース テーブルは、ストリーミング テーブルに取り込まれます。 サポートされているソース テーブルの一覧については、「 サポートされているデータ」を参照してください。

Databricks ユーザーインターフェース

  1. Azure Databricks ワークスペースのサイドバーで、[ Data Ingestion をクリックします。
  2. [データの追加] ページの [Databricks コネクタで、GitHub をクリックします。
  3. インジェスト ウィザードの Connection ページで、GitHub アクセス資格情報を格納する接続を選択します。 メタストアに対する CREATE CONNECTION 特権がある場合は、 Plus icon. 接続の作成 をクリックして、 GitHub 接続を作成の認証の詳細を使用して新しい接続を作成できます。
  4. [次へ] をクリックします。
  5. [ インジェストのセットアップ ] ページで、パイプラインの一意の名前を入力します。
  6. イベント ログを書き込むカタログとスキーマを選択します。 カタログに対するUSE CATALOG権限とCREATE SCHEMA権限がある場合は、[プラス] アイコンをクリックできます。ドロップダウン メニューでスキーマを作成し、新しいスキーマを作成します。
  7. [パイプラインの作成] をクリックして続行します
  8. [ ソース ] ページで、取り込むテーブルを選択します。
  9. [ 保存] をクリックして続行します。
  10. [ 宛先 ] ページで、データを読み込むカタログとスキーマを選択します。 カタログに対するUSE CATALOG権限とCREATE SCHEMA権限がある場合は、[プラス] アイコンをクリックできます。ドロップダウン メニューでスキーマを作成し、新しいスキーマを作成します。
  11. [ 保存] をクリックして続行します。
  12. (省略可能)[ スケジュールと通知 ] ページで、[プラス] アイコンをクリック します。 スケジュールを作成します。 変換先テーブルを更新する頻度を設定します。
  13. (省略可能)[ プラス] アイコンをクリックします。 パイプライン 操作の成功または失敗の電子メール通知を設定する通知を追加し、[ パイプラインの保存と実行] をクリックします。

宣言型オートメーション バンドル

宣言型オートメーション バンドルを使用して、GitHubパイプラインをコードとして管理します。 バンドルには、ジョブとタスクの YAML 定義を含め、Databricks CLI を使用して管理できます。また、さまざまなターゲット ワークスペース (開発、ステージング、運用など) で共有および実行できます。 詳細については、「 宣言型オートメーション バンドルとは」を参照してください。

  1. Databricks CLI を使用して新しいバンドルを作成します:

    databricks bundle init
    
  2. バンドルに 2 つの新しいリソース ファイルを追加します:

    • パイプライン定義ファイル (たとえば、 resources/github_pipeline.yml)。 「pipeline.ingestion_definitionと例」参照してください。
    • データ インジェストの頻度を制御するジョブ定義ファイル (たとえば、 resources/github_job.yml)。
  3. Databricks CLI を使用してパイプラインをデプロイします:

    databricks bundle deploy
    

Databricks ノートブック

  1. Azure Databricks ワークスペースに次のノートブックをインポートします。

    ノートブックを入手

  2. セル 1 を as-isのままにします。

  3. パイプライン構成の詳細を使用してセル 3 を変更します。 「pipeline.ingestion_definitionと例」参照してください。

  4. [ すべて実行] をクリックします。

例示

これらの例を使用して、パイプラインを構成します。 source_schema フィールドは、取り込みGitHub組織名を指定します。 destination_table名は省略可能です。指定しない場合、コネクタはsource_table名を使用します。

ソーステーブル1つを取り込む

宣言型オートメーション バンドル

次のパイプライン定義ファイルは、1 つのソース テーブルを取り込みます。

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 ノートブック

1 つのソース テーブルを取り込むパイプライン仕様の例を次に示します。

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)

複数のソース テーブルを取り込む

宣言型オートメーション バンドル

次のパイプライン定義ファイルは、複数のソース テーブルを取り込みます。

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 ノートブック

複数のソース テーブルを取り込むパイプライン仕様の例を次に示します。

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)

バンドル ジョブ定義ファイル

宣言型オートメーション バンドルで使用するジョブ定義ファイルの例を次に示します。 ジョブは、最後の実行から正確に 1 日後に毎日実行されます。

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}

一般的なパターン

高度なパイプライン構成については、「 マネージド インジェスト パイプラインの一般的なパターン」を参照してください。

次のステップ

パイプラインを開始し、スケジュールを設定し、アラートを設定します。 一般的なパイプライン メンテナンス タスクを参照してください。

その他のリソース