테이블 및 뷰를 Unity 카탈로그로 업그레이드

이 문서에서는 기존 Hive 메타스토어에 등록된 테이블과 뷰를 Unity 카탈로그로 업그레이드하는 방법을 설명합니다.

테이블이 현재 Unity 카탈로그에 등록되어 있는지 확인하려면 카탈로그 이름을 확인합니다. 카탈로그 hive_metastore의 테이블은 Hive 메타스토어에 등록되어 있습니다. 나열된 다른 모든 카탈로그는 Unity 카탈로그에서 관리합니다.

참고 항목

Unity 카탈로그는 Hive와 다른 방식으로 파티션을 관리합니다. 파티션을 직접 조작하는 Hive 명령은 Unity 카탈로그에서 관리하는 테이블에서 지원되지 않습니다.

스키마 또는 여러 테이블을 Unity 카탈로그로 업그레이드

카탈로그 탐색기 업그레이드 마법사를 사용하여 기본 Hive 메타스토어에서 Unity 카탈로그 메타스토어로 전체 스키마(데이터베이스) 및 여러 외부 테이블을 복사할 수 있습니다.

요구 사항

시작하기 전에 다음이 있어야 합니다.

  • 테이블의 위치 경로에 액세스할 수 있는 권한이 부여된 서비스 주체에 대한 정보가 포함된 스토리지 자격 증명
  • 방금 만든 스토리지 자격 증명과 클라우드 테넌트의 데이터 경로를 참조하는 외부 위치입니다.
  • 업그레이드할 테이블의 외부 위치에 대한 CREATE EXTERNAL TABLE 권한.

업그레이드 프로세스

  1. 사이드바에서 카탈로그를 클릭하여 Catalog icon카탈로그 탐색기를 엽니다.

  2. 카탈로그로 선택하고 hive_metastore 업그레이드할 스키마(데이터베이스)를 선택합니다.

    Select database

  3. 스키마 세부 정보 보기의 오른쪽 위에서 업그레이드를 클릭합니다.

  4. 업그레이드할 테이블을 모두 선택하고, 다음을 클릭합니다.

    Unity 카탈로그에서 지원하는 형식외부 테이블만 업그레이드 마법사를 사용하여 업그레이드할 수 있습니다.

  5. 각 테이블에 대한 대상 카탈로그, 스키마(데이터베이스) 및 소유자를 설정합니다.

    사용자는 카탈로그 및 스키마에 대한 권한의 컨텍스트에서 새로 만든 테이블에 액세스할 수 있습니다.

    테이블 소유자는 테이블에 대한 모든 권한(포함 SELECTMODIFY.)을 갖습니다. 소유자를 선택하지 않으면 관리되는 테이블이 소유자로 만들어집니다. Databricks는 일반적으로 그룹에 테이블 소유권을 부여하는 것이 좋습니다. Unity 카탈로그의 개체 소유권에 대한 자세한 내용은 Unity 카탈로그 개체 소유권 관리를 참조 하세요.

    동일한 카탈로그와 스키마를 여러 테이블에 할당하려면 테이블을 선택하고 대상 설정 단추를 클릭합니다.

    동일한 소유자를 여러 테이블에 할당하려면 테이블을 선택하고 소유자 설정 단추를 클릭합니다.

  6. 테이블 구성을 검토합니다. 수정하려면 이전 단추를 클릭합니다.

  7. 업그레이드 쿼리 만들기를 클릭합니다.

    생성된 SQL 문과 함께 쿼리 편집기가 표시됩니다.

  8. 쿼리를 실행합니다.

    쿼리가 완료되면 각 테이블의 메타데이터가 Hive 메타스토어에서 Unity 카탈로그로 복사됩니다. 이러한 테이블은 업그레이드 마법사에서 '업그레이드됨'으로 표시됩니다.

  9. 각 새 테이블의 권한 탭을 사용하여 세분화된 액세스 제어를 정의합니다.

  10. 새 테이블을 사용하도록 워크로드를 수정합니다.

단일 외부 테이블을 Unity 카탈로그로 업그레이드

카탈로그 탐색기를 사용하여 기본 Hive 메타스토어에서 Unity 카탈로그 메타스토어로 외부 테이블을 복사할 수 있습니다.

요구 사항

시작하기 전에 다음이 있어야 합니다.

  • 테이블의 위치 경로에 액세스할 수 있는 권한이 부여된 서비스 주체 또는 관리 ID에 대한 정보를 포함하는 스토리지 자격 증명입니다.
  • 방금 만든 스토리지 자격 증명과 클라우드 테넌트의 데이터 경로를 참조하는 외부 위치입니다.
  • 업그레이드할 테이블의 외부 위치에 대한 CREATE EXTERNAL TABLE 권한

업그레이드 프로세스

외부 테이블을 업그레이드하려면 다음을 수행합니다.

  1. 사이드바에서 카탈로그를 클릭하여 Catalog icon카탈로그 탐색기를 엽니다.

  2. 업그레이드할 데이터베이스를 선택한 다음 테이블을 선택합니다.

  3. 테이블 세부 정보 보기의 오른쪽 위 모서리에서 업그레이드 작업을 클릭합니다.

  4. 대상 카탈로그, 스키마(데이터베이스) 및 소유자를 선택합니다.

    사용자는 카탈로그 및 스키마에 대한 권한의 컨텍스트에서 새로 만든 테이블에 액세스할 수 있습니다.

    테이블 소유자는 테이블에 대한 모든 권한(포함 SELECTMODIFY.)을 갖습니다. 소유자를 선택하지 않으면 관리되는 테이블이 소유자로 만들어집니다. Databricks는 일반적으로 그룹에 테이블 소유권을 부여하는 것이 좋습니다. Unity 카탈로그의 개체 소유권에 대한 자세한 내용은 Unity 카탈로그 개체 소유권 관리를 참조 하세요.

  5. 업그레이드를 클릭합니다.

    이제 테이블 메타데이터가 Unity 카탈로그에 복사되고 새 테이블이 만들어졌습니다. 이제 사용 권한 탭을 사용하여 세분화된 액세스 제어를 정의할 수 있습니다.

  6. 새 테이블을 사용하도록 기존 워크로드를 수정합니다.

    참고 항목

    이전 테이블이 더 이상 필요하지 않은 경우 Hive 메타스토어에서 삭제할 수 있습니다. 외부 테이블을 삭제해도 클라우드 테넌트의 데이터 파일은 수정되지 않습니다.

뷰를 Unity 카탈로그로 업그레이드

보기의 참조된 모든 테이블이 동일한 Unity 카탈로그 메타스토어로 업그레이드되면 새 테이블을 참조하는 새 보기를 만들 수 있습니다.

테이블을 Unity 카탈로그 관리형 테이블로 업그레이드

테이블을 관리되는 테이블로 Unity 카탈로그로 업그레이드하려면 다음을 수행합니다.

  1. 기존 테이블을 쿼리하여 새 Unity 카탈로그 테이블을 만듭니다. 자리 표시자 값을 바꿉니다.

    • <catalog>: 새 테이블의 Unity 카탈로그 카탈로그입니다.
    • <new-schema>: 새 테이블의 Unity 카탈로그 스키마입니다.
    • <new-table>: Unity 카탈로그 테이블의 이름입니다.
    • <old-schema>: 이전 테이블의 스키마입니다(예: default).
    • <old-table>: 이전 테이블의 이름입니다.

    SQL

    CREATE TABLE <catalog>.<new-schema>.<new-table>
    AS SELECT * FROM hive_metastore.<old-schema>.<old-table>;
    

    Python

    df = spark.table("hive_metastore.<old-schema>.<old-table>")
    
    df.write.saveAsTable(
      name = "<catalog>.<new-schema>.<new-table>"
    )
    

    R

    %r
    library(SparkR)
    
    df = tableToDF("hive_metastore.<old-schema>.<old-table>")
    
    saveAsTable(
      df = df,
      tableName = "<catalog>.<new-schema>.<new-table>"
    )
    

    Scala

    val df = spark.table("hive_metastore.<old-schema>.<old-table>")
    
    df.write.saveAsTable(
      tableName = "<catalog>.<new-schema>.<new-table>"
    )
    

    일부 열 또는 행만 마이그레이션하려면 SELECT 문을 수정합니다.

    참고 항목

    이 명령은 메타스토어가 설정되었을 때 추천된 스토리지 위치에 데이터가 복사되는 관리되는 테이블을 만듭니다. 클라우드 스토리지에서 데이터를 이동하지 않고 테이블이 Unity 카탈로그에 등록된 외부 테이블을 만들려면 단일 외부 테이블을 Unity 카탈로그로 업그레이드를 참조하세요.

  2. 계정 수준의 사용자 또는 그룹에 대한 액세스 권한을 새 테이블에 부여합니다. Unity Catalog에서 권한 관리를 참조하세요.

  3. 테이블을 마이그레이션한 후 사용자는 새 테이블을 사용하도록 기존 쿼리 및 워크로드를 업데이트해야 합니다.

  4. 이전 테이블을 삭제하기 전에 해당 테이블에 대한 액세스 권한을 철회하고 관련 쿼리 및 워크로드를 다시 실행하여 종속성을 테스트합니다.