Unity CatalogとAuto Loaderの併用
Auto Loader は、 Unity Catalogで設定された外部ロケーションからデータを安全に取り込むことができます。 Unity Catalog を使用してストレージを安全に接続する方法の詳細については、「 Unity Catalog を使用してクラウド オブジェクト ストレージとサービスに接続する」を参照してください。 Auto Loader は、インクリメンタル処理を構造化ストリーミングに依存しています。推奨事項と制限事項については、「Unity Catalog と構造化ストリーミングの使用」を参照してください。
注:
Databricks Runtime 11.3 LTS以降では、共有またはシングルユーザーアクセスモードでAuto Loaderを使用できます。
ディレクトリリストモードはデフォルトでサポートされています。 ファイル通知モードは、シングル ユーザー コンピュートでのみサポートされています。
Auto Loaderを使用してUnity Catalogにより管理される外部ロケーションからデータを取り込む
Auto Loaderを使用して、Unity Catalogによって管理される任意の外部ロケーションからデータを取り込むことができます。目的の外部ロケーションに対しての READ FILES
権限が必要となります。
注:
Unity Catalogの外部ロケーションは、 Auto Loaderのクロスクラウドまたはクロスアカウント設定をサポートしていません。
Unity Catalog用のAuto Loaderリソースの場所を指定する
Unity Catalogのセキュリティモデルは、ワークロードで参照されるすべてのストレージロケーションがUnity Catalogによって管理されることを前提としています。チェックポイントとスキーマ進化の情報を、Unity Catalogにより管理されるストレージロケーションに常に保存することをDatabricksは推奨しています。Unity Catalogでは、テーブルディレクトリの下にチェックポイントファイルやスキーマ推論と進化ファイルをネストすることはできません。
例:
次の例では、実行ユーザーがターゲットテーブルに対する所有者権限を持ち、さらに以下の構成と権限を持っていることを前提としています。
ストレージロケーション |
権限 |
---|---|
s3://autoloader-source/json-data |
ファイル読み込み |
s3://dev-bucket |
READ FILES, WRITE FILES, CREATE TABLE |
Auto Loaderを使用したUnity Catalogで管理されるテーブルへの読み込み
checkpoint_path = "s3://dev-bucket/_checkpoint/dev_table"
(spark.readStream
.format("cloudFiles")
.option("cloudFiles.format", "json")
.option("cloudFiles.schemaLocation", checkpoint_path)
.load("s3://autoloader-source/json-data")
.writeStream
.option("checkpointLocation", checkpoint_path)
.trigger(availableNow=True)
.toTable("dev_catalog.dev_database.dev_table"))