Amazon S3 からのオンボードデータ
この記事では、Amazon S3 から新しい Databricks ワークスペースにデータをオンボードする方法について説明します。 Unity Catalog ボリューム(推奨)または Unity Catalog 外部ロケーションに対応するクラウドオブジェクトストレージの場所にあるソースデータに安全にアクセスする方法を学習します。次に、 Delta Live Tables で Auto Loader を使用して、 Unity Catalog管理されたテーブルにデータを段階的に取り込む方法を学習します。
注:
ノートブックではなく Databricks SQL でデータをオンボードするには、「 Databricks SQL でストリーミング テーブルを使用してデータを読み込む」を参照してください。
始める前に
管理者でない場合、この記事では、管理者から次の情報が提供されていることを前提としています。
Unity Catalog が有効になっている Databricks ワークスペースへのアクセス。 詳細については、「 Unity Catalog の設定と管理」を参照してください。
Unity Catalog外部ボリューム、またはソース データが含まれるクラウド ストレージの場所に対応するUnity Catalogの外部ロケーションに対する
READ FILES
権限。 詳細については、 「クラウド ストレージを Databricks に接続するための外部ロケーションを作成する」を参照してください。ソース データへのパス。
ボリューム・パスの例:
/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>
外部ロケーション パスの例:
s3://<bucket>/<folder>/
データをロードするスキーマに対する
USE SCHEMA
権限とCREATE TABLE
権限。クラスター作成権限 または Delta Live Tablesパイプライン クラスターを定義するクラスターポリシー へのアクセス ( フィールドが
cluster_type
dlt
に設定されています)。ソース データへのパスがボリューム パスである場合、クラスターは Databricks Runtime 13.3 LTS 以上を実行する必要があります。
重要
これらの前提条件について質問がある場合は、アカウント管理者にお問い合わせください。
ステップ 1: クラスターを作成する
クラスターを作成するには、次の手順を実行します。
Databricks ワークスペースにサインインします。
サイドバーで、[ 新規 > クラスター] をクリックします。
クラスター UI で、クラスターの一意の名前を指定します。
ソース データへのパスがボリューム パスの場合、 Databricksランタイム バージョンで13.2 以上を選択します。
[ クラスターの作成] をクリックします。
ステップ 2: データ探索ノートブックを作成する
このセクションでは、データパイプラインを作成する前にデータを理解できるように、データ探索ノートブックを作成する方法について説明します。
サイドバーで、[+ ノートブック>新規作成] をクリックします。
ノートブックは、最後に使用したクラスター (この場合は、「 ステップ 1: クラスターを作成する」で作成したクラスター) に自動的にアタッチされます。
ノートブックの名前を入力します。
言語ボタンをクリックし、ドロップダウンメニューから[
Python
]または[SQL
]を選択します。Python
はデフォルトで選択されます。S3 でソースデータへのデータアクセスを確認するには、次のコードをノートブックセルに貼り付けて をクリックし、[ 実行セル] をクリックします。
LIST '<path-to-source-data>'
%fs ls '<path-to-source-data>'
<path-to-source-data>
、データを含むディレクトリへのパスに置き換えます。これにより、データセットを含むディレクトリの内容が表示されます。
レコードのサンプルを表示して各レコードの内容と形式をよりよく理解するには、以下をノートブックのセルに貼り付け、をクリックし、 [セルの実行] をクリックします。
SELECT * from read_files('<path-to-source-data>', format => '<file-format>') LIMIT 10
spark.read.format('<file-format>').load('<path-to-source-data>').limit(10).display()
次の値を置き換えます。
<file-format>
: サポートされているファイル形式。 「ファイル形式のオプション」を参照してください。<path to source data>
: データを含むディレクトリ内のファイルへのパス。
指定したファイルの最初の 10 個のレコードが表示されます。
ステップ 3: 生データを取り込む
生データを取り込むには、次の手順を実行します。
サイドバーで、「 新規 > ノートブック」をクリックします。
ノートブックは、最後に使用したクラスター (この場合は、この記事の前半で作成したクラスター) に自動的にアタッチされます。
ノートブックの名前を入力します。
言語ボタンをクリックし、ドロップダウンメニューから[
Python
]または[SQL
]を選択します。Python
はデフォルトで選択されます。次のコードをノートブック セルに貼り付けます。
CREATE OR REFRESH STREAMING TABLE <table-name> AS SELECT * FROM STREAM read_files( '<path-to-source-data>', format => '<file-format>' )
@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>
: サポートされているファイル形式。 「ファイル形式のオプション」を参照してください。
注:
Delta Live Tables は、ノートブック セルで対話的に実行されるようには設計されていません。 ノートブックで Delta Live Tables 構文を含むセルを実行すると、クエリーが構文的に有効かどうかに関するメッセージが返されますが、クエリー ロジックは実行されません。 次の手順では、先ほど作成したインジェスト ノートブックからパイプラインを作成する方法について説明します。
ステップ 4: パイプラインを作成して発行する
パイプラインを作成して Unity Catalogに発行するには、次の手順を実行します。
サイドバーで、[ ワークフロー] をクリックし、[ Delta Live Tables ] タブをクリックして、[ パイプラインの作成] をクリックします。
パイプラインの名前を入力します。
[パイプライン モード] で [トリガー済み] を選択します。
[ソース コード] で、パイプラインの ソース コードを含むノートブックを選択します。
[宛先] で [Unity Catalog] を選択します。
テーブルが Unity Catalog によって管理され、親スキーマにアクセスできるすべてのユーザーがテーブルをクエリーできるようにするには、ドロップダウン リストから [ カタログ ] と [ターゲット スキーマ ] を選択します。
クラスター作成アクセス許可がない場合は、 Delta Live Tables をサポートする クラスター ポリシー をドロップダウン リストから選択します。
[ 詳細設定] で、 チャンネル を [プレビュー] に設定します。
他のすべてのデフォルト値をそのまま使用し、[ 作成] をクリックします。
ステップ 5: パイプラインをスケジュールする
パイプラインをスケジュールするには、次の手順を実行します。
サイドバーで、「 Delta Live Tables」をクリックします。
スケジュールするパイプラインの名前をクリックします。
[ スケジュール] > [ スケジュールの追加] をクリックします。
[ ジョブ名] に、ジョブの名前を入力します。
[スケジュール] を [スケジュール済み] に設定します。
期間、開始時刻、およびタイム ゾーンを指定します。
パイプラインの開始、成功、または失敗時にアラートを受信するように 1 つ以上の Eメール アドレスを構成します。
[作成]をクリックします。
次のステップ
新しいテーブルへのアクセス権をユーザーに付与します。 詳細については、「 Unity Catalog 特権とセキュリティ保護可能なオブジェクト」を参照してください。
新しいテーブルへのアクセス権を持つユーザーは、 ノートブック でテーブルをクエリーしたり、 Databricks SQL エディターを使用できるようになりました。