Azure Data Lake Storage Gen2 からデータをオンボードする

この記事では、Azure Data Lake Storage Gen2 から新しい Azure Databricks ワークスペースにデータをオンボードする方法について説明します。 Unity Catalog ボリューム (推奨) または Unity Catalog の外部の場所に対応するクラウド オブジェクト ストレージの場所にあるソース データに安全にアクセスする方法について学習します。 次に、Delta Live Tables で自動ローダーを使用して、Unity Catalog のマネージド テーブルにデータを増分方式で取り込む方法について学習します。

Note

ノートブックの代わりに Databricks SQL でデータをオンボードするには、「Databricks SQL でストリーミング テーブルを使用してデータを読み込む」をご覧ください。

開始する前に

管理者でない場合、この記事では、管理者が次を提供していることを前提としています。

  • Unity Catalog 対応の Azure Databricks ワークスペースへのアクセス。 詳細については、「Unity Catalog の設定と管理」を参照してください。

  • ソース データを含むクラウド ストレージの場所に対応する Unity Catalog の外部ボリュームまたは Unity Catalog の外部の場所に対する READ FILES アクセス許可。 詳しくは、「クラウド ストレージを Azure Databricks に接続するための外部の場所を作成する」をご覧ください。

  • ソース データへのパス。

    ボリューム パスの例: /Volumes/<catalog>/<schema>/<volume>/<path>/<folder>

    外部の場所のパスの例: abfss://<container>@<storage-account>.dfs.core.windows.net/<folder>

  • データを読み込むスキーマに対する USE SCHEMACREATE TABLE の権限。

  • クラスター作成のアクセス許可、または Delta Live Tables パイプライン クラスターを定義するクラスター ポリシーへのアクセス権が必要です (cluster_type フィールドは dlt に設定)。

    ソース データへのパスがボリューム パスの場合は、クラスターで Databricks Runtime 13.3 LTS 以降を実行する必要があります。

重要

これらの前提条件について質問がある場合は、アカウント管理者にお問い合わせください。

手順 1: クラスターを作成する

クラスターを作成するには、次の操作を行います。

  1. Azure Databricks ワークスペースにサインインします。
  2. サイドバーで、[新規]>[クラスター] をクリックします。
  3. クラスター UI で、クラスターの一意の名前を指定します。
  4. ソース データへのパスがボリューム パスの場合は、Databricks Runtime ランタイム バージョンで、13.2 以降を選択します。
  5. [Create cluster]\(クラスターの作成\) をクリックします。

ステップ 2: データ探索ノートブックを作成する

このセクションでは、データ パイプラインを作成する前にデータを理解できるように、データ探索ノートブックを作成する方法について説明します。

  1. サイドバーで、[+ 新規]>[ノートブック] の順にクリックします。

    ノートブックは、最後に使用したクラスター (この場合は「ステップ 1: クラスターを作成する」で作成したクラスター) に自動的にアタッチされます。

  2. ノートブックの名前を入力します。

  3. 言語ボタンをクリックし、ドロップダウン メニューから Python または SQL を選択します。 既定では、Python が選択されています。

  4. ADLS Gen2 でソース データへのデータ アクセスを確認するには、次のコードをノートブック セルに貼り付け、実行メニュー をクリックし、[セル実行] をクリックします。

    SQL

    LIST '<path-to-source-data>'
    

    Python

    %fs ls '<path-to-source-data>'
    

    <path-to-source-data> をお使いのデータが含まれているディレクトリへのパスに置き換えます。

    これにより、データセットを含むディレクトリの内容が表示されます。

  5. 各レコードの内容と形式を理解するために、レコードのサンプルを表示するには、次の内容をノートブック セルに貼り付け、実行メニュー をクリックし、[セルの実行] をクリックします。

    SQL

    SELECT * from read_files('<path-to-source-data>', format => '<file-format>') LIMIT 10
    

    Python

    spark.read.format('<file-format>').load('<path-to-source-data>').limit(10).display()
    

    次の値を置き換えます。

    • <file-format>: サポートされるファイル形式。 「ファイル形式のオプション」を参照してください。
    • <path to source data>: お使いのデータを含むディレクトリ内のファイルへのパス。

    これにより、指定したファイルの最初の 10 個のレコードが表示されます。

ステップ 3: 生データを取り込む

生データを取り込むには、次の操作を行います。

  1. サイドバーで、[新規]>[ノートブック] の順にクリックします。

    ノートブックは、最後に使用したクラスター (この場合は、この記事の前の方で作成されたクラスター) に自動的にアタッチされます。

  2. ノートブックの名前を入力します。

  3. 言語ボタンをクリックし、ドロップダウン メニューから Python または SQL を選択します。 既定では、Python が選択されています。

  4. ノートブックのセルに次のコードを貼り付けます。

    SQL

    CREATE OR REFRESH STREAMING TABLE
      <table-name>
    AS SELECT
      *
    FROM
      STREAM read_files(
        '<path-to-source-data>',
        format => '<file-format>'
      )
    

    Python

    @dlt.table(table_properties={'quality': 'bronze'})
    def <table-name>():
      return (
         spark.readStream.format('cloudFiles')
         .option('cloudFiles.format', '<file-format>')
         .load(f'{<path-to-source-data>}')
     )
    

    次の値を置き換えます。

    • <table-name>: 取り込んだレコードを含むテーブルの名前。
    • <path-to-source-data>: ソース データへのパス。
    • <file-format>: サポートされるファイル形式。 「ファイル形式のオプション」を参照してください。

Note

Delta Live Tables は、ノートブック セルで対話形式で実行するようには設計されていません。 ノートブックで Delta Live Tables 構文を含むセルを実行すると、クエリが構文的に有効であるかどうかに関するメッセージが返されますが、クエリ ロジックは実行されません。 次の手順では、先ほど作成したインジェスト ノートブックからパイプラインを作成する方法について説明します。

ステップ 4: パイプラインを作成して公開する

パイプラインを作成して Unity Catalog に公開するには、次の操作を行います。

  1. サイドバーで、[ワークフロー][Delta Live Tables] タブの順にクリックし、[パイプラインを作成] をクリックします。
  2. パイプラインの名前を入力します。
  3. [パイプライン モード][トリガー] を選択します。
  4. [ソース コード] で、パイプラインのソース コードを含むノートブックを選択します。
  5. [宛先][Unity Catalog] を選択します。
  6. テーブルが Unity Catalog で管理され、親スキーマにアクセスできるユーザーがクエリを実行できることを確実にするには、ドロップダウン リストからカタログターゲット スキーマを選択します。
  7. クラスターの作成のアクセス許可がない場合は、ドロップダウン リストから Delta Live Tables をサポートするクラスター ポリシーを選択します。
  8. Advanced の場合は、[チャネル][プレビュー] に設定します。
  9. 他の値はすべて既定値のままにし、[作成] をクリックします。

ステップ 5: パイプラインのスケジュールを設定する

パイプラインのスケジュールを設定するには、次の操作を行います。

  1. サイドバーで、[Delta Live Tables] をクリックします。
  2. スケジュールを設定するパイプラインの名前をクリックします。
  3. [スケジュール]>[スケジュールの追加] をクリックします。
  4. [ジョブ名] に、ジョブの名前を入力します。
  5. [スケジュール][スケジュール済み] に設定します。
  6. 期間、開始時刻、タイム ゾーンを指定します。
  7. パイプラインの開始、成功、または失敗に関するアラートを受信するように、1 つ以上のメール アドレスを構成します。
  8. Create をクリックしてください。

次のステップ