テーブルとビューを 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 メタストアにコピーできます。

要件

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

アップグレード プロセス

  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 がテーブルの場所のパスにアクセスすることを許可するサービス アカウントに関する情報を含むストレージ認証情報。

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

  • 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 とワークロードを再実行して、依存関係をテストします。