この記事では、Azure Data Lake Storage から新しい Azure Databricks ワークスペースにデータをオンボードする方法について説明します。 Unity カタログ ボリューム (推奨) または Unity カタログの外部の場所に対応するクラウド オブジェクト ストレージの場所にあるソース データに安全にアクセスする方法について説明します。 次に、Lakeflow 宣言型パイプラインで自動ローダーを使用して、Unity カタログのマネージド テーブルにデータを増分的に取り込む方法について説明します。
注記
ノートブックではなく Databricks SQL でデータをオンボードするには、「 Databricks SQL でストリーミング テーブルを使用する」を参照してください。
開始する前に
管理者でない場合、この記事では、管理者が次の情報を提供していることを前提としています。
Unity Catalog 対応の Azure Databricks ワークスペースへのアクセス。 詳細については、「 Unity カタログの概要」を参照してください。
Unity カタログの外部ボリュームに対する
READ VOLUME
アクセス許可、またはソース データを含むクラウド ストレージの場所に対応する Unity カタログの外部の場所に対するREAD FILES
アクセス許可。 詳しくは、「クラウド ストレージを Azure Databricks に接続するための外部の場所を作成する」をご覧ください。ソースデータへのアクセスパス。
ボリューム パスの例:
/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>
外部の場所のパスの例:
abfss://<container>@<storage-account>.dfs.core.windows.net/<folder>
データを読み込むスキーマに対する
USE SCHEMA
とCREATE TABLE
の権限。パイプライン クラスターを定義するクラスター作成アクセス許可またはクラスター ポリシーへのアクセス (
cluster_type
フィールドがdlt
に設定されます)。ソース データへのパスがボリューム パスの場合は、クラスターで Databricks Runtime 13.3 LTS 以降を実行する必要があります。
重要
これらの前提条件について質問がある場合は、アカウント管理者にお問い合わせください。
手順 1: クラスターを作成する
クラスターを作成するには、次の操作を行います。
- Azure Databricks ワークスペースにサインインします。
- サイドバーで、[新規]>[クラスター] をクリックします。
- クラスター UI で、クラスターの一意の名前を指定します。
- ソース データへのパスがボリューム パスの場合は、Databricks Runtime ランタイム バージョンで、13.2 以降を選択します。
- [Create cluster]\(クラスターの作成\) をクリックします。
ステップ 2: データ探索ノートブックを作成する
このセクションでは、データ パイプラインを作成する前にデータを理解できるように、データ探索ノートブックを作成する方法について説明します。
サイドバーで、[+ 新規]>[ノートブック] の順にクリックします。
ノートブックは、最後に使用したクラスター (この場合は「ステップ 1: クラスターを作成する」で作成したクラスター) に自動的にアタッチされます。
ノートブックの名前を入力します。
言語ボタンをクリックし、ドロップダウン メニューから
Python
またはSQL
を選択します。 既定では、Python
が選択されています。ADLS でソース データへのデータ アクセスを確認するには、次のコードをノートブック セルに貼り付け、[
をクリックし、[ セルの実行] をクリックします。
SQL
LIST '<path-to-source-data>'
Python(プログラミング言語)
%fs ls '<path-to-source-data>'
<path-to-source-data>
をお使いのデータが含まれているディレクトリへのパスに置き換えます。これにより、データセットを含むディレクトリの内容が表示されます。
各レコードの内容と形式を理解するために、レコードのサンプルを表示するには、次の内容をノートブック セルに貼り付け、
をクリックし、[セルの実行] をクリックします。
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: 生データを取り込む
生データを取り込むには、次の操作を行います。
サイドバーで、[新規]>[ノートブック] の順にクリックします。
ノートブックは、最後に使用したクラスター (この場合は、この記事の前の方で作成されたクラスター) に自動的にアタッチされます。
ノートブックの名前を入力します。
言語ボタンをクリックし、ドロップダウン メニューから
Python
またはSQL
を選択します。 既定では、Python
が選択されています。ノートブックのセルに次のコードを貼り付けます。
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>
: サポートされるファイル形式。 「ファイル形式のオプション」を参照してください。
-
注記
Lakeflow 宣言パイプラインは、ノートブック のセルで対話形式で実行するようには設計されていません。 ノートブックで Lakeflow 宣言型パイプライン構文を含むセルを実行すると、クエリが構文的に有効であるかどうかに関するメッセージが返されますが、クエリ ロジックは実行されません。 次の手順では、先ほど作成したインジェスト ノートブックからパイプラインを作成する方法について説明します。
ステップ 4: パイプラインを作成して公開する
パイプラインを作成して Unity Catalog に公開するには、次の操作を行います。
- ワークスペースで、[ワークフロー] アイコンをクリック
サイドバーのジョブとパイプライン。
- [ 新規] で、[ ETL パイプライン] をクリックします。
- パイプラインの名前を入力します。
- [パイプライン モード] で [トリガー] を選択します。
- [ソース コード] で、パイプラインのソース コードを含むノートブックを選択します。
- [宛先] で [Unity Catalog] を選択します。
- テーブルが Unity Catalog で管理され、親スキーマにアクセスできるユーザーがクエリを実行できることを確実にするには、ドロップダウン リストからカタログとターゲット スキーマを選択します。
- クラスター作成アクセス許可がない場合は、ドロップダウン リストから Lakeflow 宣言パイプラインをサポートする クラスター ポリシー を選択します。
- Advanced の場合は、[チャネル] を [プレビュー] に設定します。
- 他の値はすべて既定値のままにし、[作成] をクリックします。
ステップ 5: パイプラインのスケジュールを設定する
パイプラインのスケジュールを設定するには、次の操作を行います。
- ワークスペースで、[ワークフロー] アイコンをクリック
サイドバーのジョブとパイプライン。
- スケジュールを設定するパイプラインの名前をクリックします。
- [スケジュール]>[スケジュールの追加] をクリックします。
- [ジョブ名] に、ジョブの名前を入力します。
- [スケジュール] を [スケジュール済み] に設定します。
- 期間、開始時刻、タイム ゾーンを指定します。
- パイプラインの開始、成功、または失敗に関するアラートを受信するように、1 つ以上のメール アドレスを構成します。
- Create をクリックしてください。
次のステップ
- 新しいテーブルへのアクセス権をユーザーに付与します。 詳細については、「Unity Catalog の権限とセキュリティ保護可能なオブジェクト」を参照してください。
- 新しいテーブルにアクセスできるユーザーは、ノートブック内のテーブルに対してクエリを実行したり、Databricks SQL エディターを使用したりできるようになりました。