Unity CatalogとAuto Loaderの併用

Auto Loader は、Unity Catalog で構成された外部ロケーションからデータを安全に取り込むことができます。 ストレージを Unity Catalog に安全に接続する方法の詳細については、「 Unity Catalog を使用してクラウド オブジェクト ストレージに接続する」を参照してください。 Auto Loader は、増分処理のために構造化ストリーミングに依存しています。推奨事項と制限事項については、「 構造化ストリーミングでの Unity Catalog の使用」を参照してください。

注:

Databricks Runtime 11.3 LTS以降では、共有またはシングルユーザーアクセスモードでAuto Loaderを使用できます。Databricks Runtime 11.2 では、シングルユーザーアクセスモードのみを使用できます。

ディレクトリー・リスト・モードはデフォルトでサポートされています。 ファイル通知モードは、シングル ユーザー クラスターでのみサポートされます。

Auto Loaderを使用してUnity Catalogにより管理される外部ロケーションからデータを取り込む

Auto Loaderを使用して、Unity Catalogによって管理される任意の外部ロケーションからデータを取り込むことができます。目的の外部ロケーションに対しての READ FILES 権限が必要となります。

Unity Catalog用のAuto Loaderリソースの場所を指定する

Unity Catalogのセキュリティモデルは、ワークロードで参照されるすべてのストレージロケーションがUnity Catalogによって管理されることを前提としています。チェックポイントとスキーマ進化の情報を、Unity Catalogにより管理されるストレージロケーションに常に保存することをDatabricksは推奨しています。Unity Catalogでは、テーブルディレクトリの下にチェックポイントファイルやスキーマ推論と進化ファイルをネストすることはできません。

例:

次の例では、実行ユーザーがターゲットテーブルに対する所有者権限を持ち、さらに以下の構成と権限を持っていることを前提としています。

ストレージロケーション

権限

gs://autoloader-ソース/JSON-data

ファイル読み込み

gs://dev-bucket

READ FILES, WRITE FILES, CREATE TABLE

Auto Loaderを使用したUnity Catalogで管理されるテーブルへの読み込み

checkpoint_path = "gs://dev-bucket/_checkpoint/dev_table"

(spark.readStream
  .format("cloudFiles")
  .option("cloudFiles.format", "json")
  .option("cloudFiles.schemaLocation", checkpoint_path)
  .load("gs://autoloader-source/json-data")
  .writeStream
  .option("checkpointLocation", checkpoint_path)
  .trigger(availableNow=True)
  .toTable("dev_catalog.dev_database.dev_table"))