テーブルとビューを Unity Catalog にアップグレードする

この記事では、既存の Hive metastore に登録されているテーブルとビューを Unity Catalogにアップグレードする方法について説明します。

テーブルが現在 Unity Catalogに登録されているかどうかを確認するには、カタログ名を確認します。 カタログ hive_metastore 内のテーブルは、 Hive metastoreに登録されます。 リストされているその他のカタログは、 Unity Catalogによって管理されます。

Unity Catalog は Hive とは異なる方法でパーティションを管理します。 パーティションを直接操作する Hive コマンドは、 Unity Catalogによって管理されるテーブルではサポートされていません。

スキーマまたは複数のテーブルを Unity Catalog にアップグレードする

カタログ エクスプローラー のアップグレード ウィザードを使用して、完全なスキーマ (データベース) と複数の外部テーブルを既定の Hive metastore から Unity Catalog メタストアにコピーできます。

要件

開始する前に、次のものが必要です。

  • Unity Catalog がテーブルの場所のパスにアクセスすることを承認する IAMロールを含む ストレージ資格情報

  • 作成したストレージ資格情報と、クラウド テナント上のデータへのパスを参照する 外部ロケーション

  • CREATE EXTERNAL TABLE アップグレードするテーブルの外部ロケーションに対する権限。

アップグレード プロセス

  1. サイドバーの「カタログ アイコン カタログ 」(Catalog) をクリックして、「 カタログエクスプローラ」(Catalog Explorer ) を開きます。

  2. カタログとして [ hive_metastore ] を選択し、アップグレードするスキーマ (データベース) を選択します。

    データベースの選択
  3. スキーマ詳細ビューの右上にある [ アップグレード ] をクリックします。

  4. アップグレードするすべてのテーブルを選択し、[ 次へ] をクリックします。

    Unit y Catalog でサポートされている形式 の 外部テーブ ル のみを、アップグレード ウィザードを使用してアップグレードできます。

  5. 各テーブルの宛先カタログ、スキーマ (データベース)、および所有者を設定します。

    ユーザーは、 カタログとスキーマに対する権限のコンテキストで、新しく作成されたテーブルにアクセスできます。

    テーブルの所有者は、 SELECTMODIFYを含む、テーブルに対するすべての権限を持ちます。 所有者を選択しない場合、マネージド テーブルは自分が所有者として作成されます。 Databricks では、通常、テーブルに所有権をグループに付与することをお勧めします。 Unity Catalogでのオブジェクト所有権の詳細については、「 Unity Catalog オブジェクトの所有権を管理する」を参照してください。

    同じカタログとスキーマを複数のテーブルに割り当てるには、テーブルを選択し、[ 変換先の設定 ] ボタンをクリックします。

    複数のテーブルに同じ所有者を割り当てるには、テーブルを選択して [ 所有者の設定 ] ボタンをクリックします。

  6. テーブル構成を確認します。 変更するには、[ 前へ ] ボタンをクリックします。

  7. [ アップグレード用のクエリーの作成] をクリックします。

    クエリー・エディターが表示され、生成された SQL ステートメントが表示されます。

  8. クエリーを実行します。

    クエリーが完了すると、各テーブルのメタデータが Hive metastore から Unity Catalogにコピーされます。 これらのテーブルは、アップグレード ウィザードでアップグレード済みとしてマークされます。

  9. 新しい各テーブルの [アクセス許可 ] タブを使用して、きめ細かなアクセス制御を定義します。

  10. 新しいテーブルを使用するようにワークロードを変更します。

1 つの外部テーブルを Unity Catalog にアップグレードする

カタログ エクスプローラー を使用して、既定の Hive metastore から Unity Catalog メタストアに外部テーブルをコピーできます。

要件

開始する前に、次のものが必要です。

  • Unity Catalog がテーブルの場所のパスにアクセスすることを承認する IAMロールを含む ストレージ資格情報

  • 作成したストレージ資格情報と、クラウド テナント上のデータへのパスを参照する 外部ロケーション

  • CREATE EXTERNAL TABLE アップグレードするテーブルの外部ロケーションに対する権限。

アップグレード プロセス

外部テーブルをアップグレードするには:

  1. サイドバーのカタログ アイコン 「カタログ 」(Catalog) をクリックして、「 カタログエクスプローラ」(Catalog Explorer ) を開きます。

  2. アップグレードするデータベースを選択し、次にテーブルを選択します。

  3. テーブル詳細ビューの右上隅にある [ アップグレード アクション ] をクリックします。

  4. 宛先カタログ、スキーマ (データベース)、および所有者を選択します。

    ユーザーは、 カタログとスキーマに対する権限のコンテキストで、新しく作成されたテーブルにアクセスできます。

    テーブルの所有者は、 SELECTMODIFYを含む、テーブルに対するすべての権限を持ちます。 所有者を選択しない場合、マネージド テーブルは自分が所有者として作成されます。 Databricks では、通常、テーブルに所有権をグループに付与することをお勧めします。 Unity Catalogでのオブジェクト所有権の詳細については、「 Unity Catalog オブジェクトの所有権を管理する」を参照してください。

  5. [ アップグレード] をクリックします。

    テーブル メタデータが Unity Catalogにコピーされ、新しいテーブルが作成されます。 [ アクセス許可] タブを使用して、きめ細かなアクセス制御を定義できるようになりました。

  6. 新しいテーブルを使用するように既存のワークロードを変更します。

    古いテーブルが不要になった場合は、 Hive metastoreから削除できます。 外部テーブルを削除しても、クラウド テナント上のデータ ファイルは変更されません。

ビューを Unity Catalog にアップグレードする

ビューのすべての参照テーブルを同じ Unity Catalog メタストアにアップグレードした後、新しいテーブルを参照する 新しいビューを作成できます

テーブルを Unity Catalog 管理テーブルに アップグレードする

テーブルをマネージド テーブルとして Unity Catalog にアップグレードするには:

  1. 既存のテーブルに対してクエリを実行して、新しい Unity Catalog テーブルを作成します。 プレースホルダー値を置き換えます。

    • <catalog>: 新しいテーブルの Unity Catalog カタログ。

    • <new-schema>: 新しいテーブルの Unity Catalog スキーマ。

    • <new-table>: Unity Catalog テーブルの名前。

    • <old-schema>: defaultなどの古いテーブルのスキーマ。

    • <old-table>: 古いテーブルの名前。

    CREATE TABLE <catalog>.<new-schema>.<new-table>
    AS SELECT * FROM hive_metastore.<old-schema>.<old-table>;
    
    df = spark.table("hive_metastore.<old-schema>.<old-table>")
    
    df.write.saveAsTable(
      name = "<catalog>.<new-schema>.<new-table>"
    )
    
    %r
    library(SparkR)
    
    df = tableToDF("hive_metastore.<old-schema>.<old-table>")
    
    saveAsTable(
      df = df,
      tableName = "<catalog>.<new-schema>.<new-table>"
    )
    
    val df = spark.table("hive_metastore.<old-schema>.<old-table>")
    
    df.write.saveAsTable(
      tableName = "<catalog>.<new-schema>.<new-table>"
    )
    

    一部の列または行のみを移行する場合は、 SELECT ステートメントを変更します。

    このコマンドは、メタストアのセットアップ時に指定されたストレージの場所にデータがコピーされる マネージド テーブル を作成します。 クラウド ストレージ内のデータを移動せずにテーブルが Unity Catalog に登録される 外部テーブル を作成するには、「 1 つの外部テーブルを Unity Catalog にアップグレード する」を参照してください。

  2. アカウントレベルのユーザーまたはグループに、新しいテーブルへのアクセス権を付与します。 Unity Catalogでの権限の管理を参照してください。

  3. テーブルが移行された後、ユーザーは新しいテーブルを使用するように既存のクエリーとワークロードを更新する必要があります。

  4. 古いテーブルを削除する前に、テーブルへのアクセスを取り消し、関連する Query とワークロードを再実行して、依存関係をテストします。