카탈로그 만들기 및 관리

이 문서에서는 Unity Catalog에서 카탈로그를 만들고 관리하는 방법을 보여줍니다. 카탈로그에는 스키마(데이터베이스)가 포함되고 스키마에는 테이블, 뷰, 볼륨, 모델 및 함수가 포함됩니다.

참고 항목

Unity 카탈로그에 대해 자동으로 사용하도록 설정된 작업 영역에서는 기본적으로 작업 영역 카탈로그 가 생성되었습니다. 작업 영역의 모든 사용자(및 작업 영역만)는 기본적으로 액세스할 수 있습니다. 1단계: 작업 영역이 Unity 카탈로그에 사용하도록 설정되어 있는지 확인합니다.

참고 항목

외부 데이터 시스템에서 데이터베이스를 미러 Unity 카탈로그 개체인 외세의 카탈로그를 만드는 방법을 알아보려면 외세 카탈로그 만들기를 참조하세요. 또한 외국 카탈로그 관리 및 작업도 참조하세요.

요구 사항

카탈로그를 만들려면 다음을 수행합니다.

  • Azure Databricks 메타스토어 관리자이거나 CREATE CATALOG metastore에 대한 권한이 있어야 합니다.

  • 카탈로그 만들기를 수행하는 작업 영역에 연결된 Unity Catalog 메타스토어가 있어야 합니다.

  • 카탈로그를 만들기 위해 Notebook을 실행하는 데 사용하는 클러스터는 Unity 카탈로그 규격 액세스 모드를 사용해야 합니다. 액세스 모드를 참조 하세요.

    SQL 웨어하우스는 항상 Unity 카탈로그를 지원합니다.

카탈로그 만들기

카탈로그를 만들려면 카탈로그 탐색기 또는 SQL 명령을 사용할 수 있습니다.

카탈로그 탐색기

  1. 메타스토어에 연결된 작업 영역에 로그인합니다.

  2. 카탈로그를 클릭합니다카탈로그 아이콘.

  3. 카탈로그 만들기 단추를 클릭합니다.

  4. 만들 카탈로그 유형을 선택합니다.

    • 표준 카탈로그: Unity 카탈로그에서 관리하는 데이터 자산을 구성하는 보안 개체입니다. Lakehouse 페더레이션을 제외한 모든 사용 사례.
    • 외부 카탈로그: Lakehouse Federation을 사용하여 외부 데이터 시스템의 데이터베이스를 미러 Unity 카탈로그의 보안 개체입니다. Lakehouse 페더레이션 설정 개요를 참조하세요.
  5. (선택 사항이지만 강력하게 권장됨) 관리되는 스토리지 위치를 지정합니다. CREATE MANAGED STORAGE 대상 외부 위치에 대한 권한이 필요합니다. Unity 카탈로그에서 관리되는 스토리지 위치 지정을 참조하세요.

    Important

    작업 영역에 메타스토어 수준 스토리지 위치가 없는 경우 카탈로그를 만들 때 관리되는 스토리지 위치를 지정해야 합니다.

  6. 만들기를 클릭합니다.

  7. (선택 사항) 카탈로그가 바인딩된 작업 영역을 지정합니다.

    기본적으로 카탈로그는 현재 메타스토어에 연결된 모든 작업 영역과 공유됩니다. 카탈로그에 특정 작업 영역으로 제한해야 하는 데이터가 포함된 경우 작업 영역 탭으로 이동하여 해당 작업 영역을 추가합니다.

    자세한 내용은 (선택 사항) 특정 작업 영역에 카탈로그 할당을 참조 하세요.

  8. 카탈로그에 대한 권한을 할당합니다. Unity 카탈로그 권한 및 보안 개체를 참조하세요.

Sql

  1. Notebook 또는 Databricks SQL 편집기에서 다음 SQL 명령을 실행합니다. 괄호 안의 항목은 선택 사항입니다. 자리 표시자 값을 바꿉니다.

    • <catalog-name>: 카탈로그의 이름입니다.

    • <location-path>: 선택 사항이지만 강력하게 권장됩니다. 이 카탈로그의 관리 테이블을 메타스토어에 대해 구성된 기본 루트 스토리지와 다른 위치에 저장하려면 스토리지 위치 경로를 제공합니다.

      Important

      작업 영역에 메타스토어 수준 스토리지 위치가 없는 경우 카탈로그를 만들 때 관리되는 스토리지 위치를 지정해야 합니다.

      이 경로는 외부 위치 구성에서 정의해야 하며 외부 위치 구성에 대한 권한이 있어야 합니다 CREATE MANAGED STORAGE . 외부 위치 구성에 정의된 경로 또는 하위 경로(즉, 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance' 또는 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance/product')를 사용할 수 있습니다. Databricks Runtime 11.3 이상이 필요합니다.

    • <comment>: 선택적 설명 또는 기타 설명입니다.

    참고 항목

    외부 카탈로그(Lakehouse Federation에 사용되는 외부 데이터 시스템의 데이터베이스를 미러 Unity 카탈로그의 보안 개체)를 만드는 경우 SQL 명령은 CREATE FOREIGN CATALOG 서로 다르며 옵션은 다릅니다. 외국 카탈로그 만들기를 참조하세요.

    CREATE CATALOG [ IF NOT EXISTS ] <catalog-name>
       [ MANAGED LOCATION '<location-path>' ]
       [ COMMENT <comment> ];
    

    예를 들어, 이름이 example인 카탈로그를 만들려면 다음을 수행합니다.

    CREATE CATALOG IF NOT EXISTS example;
    

    작업 영역 카탈로그 바인딩이라고도 하는 계정의 특정 작업 영역에 대한 카탈로그 액세스를 제한하려면 하나 이상의 작업 영역에 카탈로그 바인딩을 참조 하세요.

    매개 변수 설명은 CREATE CATALOG를 참조하세요.

  2. 카탈로그에 권한을 할당합니다. Unity 카탈로그 권한 및 보안 개체를 참조하세요.

카탈로그를 만들면 defaultinformation_schema라는 두 개의 스키마(데이터베이스)가 자동으로 만들어집니다.

Databricks Terraform 공급자databricks_catalog를 사용하여 카탈로그를 만들 수도 있습니다. databricks_catalogs를 사용하여 카탈로그에 대한 정보를 검색할 수 있습니다.

(선택 사항) 특정 작업 영역에 카탈로그 할당

작업 영역을 사용하여 사용자 데이터 액세스를 격리하는 경우 계정의 특정 작업 영역(작업 영역 카탈로그 바인딩이라고도 함)에 대한 카탈로그 액세스를 제한할 수 있습니다. 기본값은 카탈로그를 현재 메타스토어에 연결된 모든 작업 영역과 공유하는 것입니다.

작업 영역(기본값)에서 카탈로그에 대한 읽기 및 쓰기 액세스를 허용하거나 읽기 전용 액세스를 지정할 수 있습니다. 읽기 전용을 지정하면 모든 쓰기 작업이 해당 작업 영역에서 해당 카탈로그로 차단됩니다.

카탈로그를 특정 작업 영역에 바인딩하는 일반적인 사용 사례는 다음과 같습니다.

  • 사용자가 프로덕션 작업 영역 환경에서만 프로덕션 데이터에 액세스할 수 있도록 합니다.
  • 사용자가 전용 작업 영역에서 중요한 데이터만 처리할 수 있도록 합니다.
  • 개발자 작업 영역에서 프로덕션 데이터에 대한 읽기 전용 액세스 권한을 사용자에게 제공하여 개발 및 테스트를 사용하도록 설정합니다.

작업 영역 카탈로그 바인딩 예제

프로덕션 및 개발 격리의 예를 들어 보세요. 프로덕션 데이터 카탈로그를 프로덕션 작업 영역에서만 액세스할 수 있도록 지정하면 사용자에게 발급된 개별 보조금이 대체됩니다.

카탈로그 작업 영역 바인딩 다이어그램

이 다이어그램에서는 prod_catalog 두 개의 프로덕션 작업 영역에 바인딩됩니다. 호출 my_table 된 테이블에 prod_catalog 대한 액세스 권한이 사용자에게 부여되었다고 가정합니다(사용GRANT SELECT ON my_table TO <user>). 사용자가 개발자 작업 영역에서 액세스 my_table 하려고 하면 오류 메시지가 표시됩니다. 사용자는 Prod ETL 및 Prod Analytics 작업 영역에서만 액세스할 my_table 수 있습니다.

작업 영역 카탈로그 바인딩은 플랫폼의 모든 영역에서 적용됩니다. 예를 들어 정보 스키마를 쿼리하는 경우 쿼리를 실행한 작업 영역에서 액세스할 수 있는 카탈로그만 표시됩니다. 마찬가지로 데이터 계보 및 검색 UI는 작업 영역에 할당된 카탈로그만 표시합니다(바인딩 사용 여부 또는 기본적으로).

하나 이상의 작업 영역에 카탈로그 바인딩

특정 작업 영역에 카탈로그를 할당하려면 카탈로그 탐색기 또는 Unity 카탈로그 REST API를 사용할 수 있습니다.

필요한 권한: Metastore 관리자 또는 카탈로그 소유자입니다.

참고 항목

Metastore 관리자는 카탈로그 탐색기를 사용하여 메타스토어의 모든 카탈로그를 볼 수 있으며 카탈로그 소유자는 카탈로그가 현재 작업 영역에 할당되었는지 여부에 관계없이 메타스토어에서 소유한 모든 카탈로그를 볼 수 있습니다. 작업 영역에 할당되지 않은 카탈로그는 회색으로 표시되고 자식 개체는 표시되거나 쿼리할 수 없습니다.

카탈로그 탐색기

  1. 메타스토어에 연결된 작업 영역에 로그인합니다.

  2. 카탈로그를 클릭합니다카탈로그 아이콘.

  3. 카탈로그 창의 왼쪽에서 카탈로그 이름을 클릭합니다.

    기본 카탈로그 탐색기 창은 기본적으로 카탈로그 목록으로 설정됩니다. 카탈로그를 선택할 수도 있습니다.

  4. 작업 영역 탭에서 모든 작업 영역에 검사 액세스 권한이 있는지 선택 취소 합니다.

    카탈로그가 이미 하나 이상의 작업 영역에 바인딩된 경우 이 검사box는 이미 지워집니다.

  5. 작업 영역에 할당을 클릭하고 할당할 작업 영역을 입력하거나 찾습니다.

  6. (선택 사항) 작업 영역 액세스를 읽기 전용으로 제한합니다.

    액세스 수준 관리 메뉴에서 읽기 전용으로 액세스 변경을 선택합니다.

    카탈로그를 편집하고 읽기 및 쓰기에 대한 액세스 변경(Change access)을 선택하여 언제든지 이 선택을 되돌릴 수 있습니다.

액세스 권한을 취소하려면 작업 영역 탭으로 이동하여 작업 영역을 선택하고 해지(Revoke)를 클릭합니다.

API

작업 영역에 카탈로그를 할당하려면 두 개의 API와 두 단계가 필요합니다. 다음 예제에서는 작업 영역 인스턴스 이름으로 바꿉 <workspace-url> 니다. 작업 영역 인스턴스 이름 및 작업 영역 ID를 가져오는 방법을 알아보려면 작업 영역 개체에 대한 식별자 가져오기를 참조 하세요. 액세스 토큰을 가져오는 방법에 대한 자세한 내용은 Azure Databricks 자동화에 대한 인증 - 개요를 참조하세요.

  1. API를 catalogs 사용하여 카탈로그 isolation mode 를 다음으로 ISOLATED설정합니다.

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/catalogs/<my-catalog> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
     "isolation_mode": "ISOLATED"
     }'
    

    기본값 isolation modeOPEN 메타스토어에 연결된 모든 작업 영역입니다.

  2. 업데이트 bindings API를 사용하여 작업 영역을 카탈로그에 할당합니다.

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/bindings/catalog/<my-catalog> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
      "add": [{"workspace_id": <workspace-id>, "binding_type": <binding-type>}...],
      "remove": [{"workspace_id": <workspace-id>, "binding_type": "<binding-type>}...]
    }'
    

    "add""remove" 속성을 사용하여 작업 영역 바인딩을 추가하거나 제거합니다. <binding-type>는 (기본값) 또는 “BINDING_TYPE_READ_ONLY”.일 수 “BINDING_TYPE_READ_WRITE” 있습니다.

카탈로그에 대한 모든 작업 영역 할당을 나열하려면 목록 bindings API를 사용합니다.

   curl -L -X GET 'https://<workspace-url>/api/2.1/unity-catalog/bindings/catalog/<my-catalog> \
   -H 'Authorization: Bearer <my-token> \

작업 영역에서 카탈로그 바인딩 해제

카탈로그 탐색기 또는 bindings API를 사용하여 카탈로그에 대한 작업 영역 액세스를 취소하기 위한 지침은 하나 이상의 작업 영역에 카탈로그 바인딩에 포함되어 있습니다.

Important

작업 영역이 자동으로 Unity 카탈로그에 사용하도록 설정되어 있고 작업 영역 카탈로그가 있는 경우 작업 영역 관리자는 해당 카탈로그를 소유하고 작업 영역에서만 해당 카탈로그에 대한 모든 권한을 갖습니다. 해당 카탈로그를 바인딩 해제하거나 다른 카탈로그에 바인딩하는 경우 작업 영역 관리자 그룹이 작업 영역-로컬 그룹이므로 작업 영역 관리자 그룹의 구성원에게 개별 사용자 또는 계정 수준 그룹을 사용하는 데 필요한 권한을 수동으로 부여해야 합니다. 계정 그룹 및 작업 영역-로컬 그룹에 대한 자세한 내용은 계정 그룹과 작업 영역-로컬 그룹 간의 차이를 참조하세요.

카탈로그에 스키마 추가

카탈로그에 스키마(데이터베이스)를 추가하는 방법을 알아봅니다. 스키마 만들기 및 관리(데이터베이스)를 참조하세요.

카탈로그 세부 정보 보기

카탈로그에 대한 정보를 보려면 카탈로그 탐색기 또는 SQL 명령을 사용할 수 있습니다.

카탈로그 탐색기

  1. 메타스토어에 연결된 작업 영역에 로그인합니다.

  2. 카탈로그를 클릭합니다카탈로그 아이콘.

  3. 카탈로그 창에서 카탈로그를 찾아 해당 이름을 클릭합니다.

    일부 세부 정보는 페이지 맨 위에 나열됩니다. 스키마, 세부 정보, 사용 권한작업 영역 탭에서 다른 사용자를 볼 수 있습니다.

Sql

Notebook 또는 Databricks SQL 편집기에서 다음 SQL 명령을 실행합니다. 괄호 안의 항목은 선택 사항입니다. <catalog-name> 자리 표시자를 바꿉니다.

자세한 내용은 DESCRIBE CATALOG를 참조하세요.

DESCRIBE CATALOG <catalog-name>;

전체 세부 정보를 가져오는 데 사용합니다 CATALOG EXTENDED .

카탈로그 삭제

카탈로그를 삭제하거나 삭제하려면 카탈로그 탐색기 또는 SQL 명령을 사용할 수 있습니다. 카탈로그를 삭제하려면 해당 소유자가 되어야 합니다.

카탈로그 탐색기

카탈로그를 삭제하려면 먼저 카탈로그에서 information_schema를 제외한 모든 스키마를 삭제해야 합니다. 여기에는 자동 생성된 default 스키마가 포함됩니다.

  1. 메타스토어에 연결된 작업 영역에 로그인합니다.
  2. 카탈로그를 클릭합니다카탈로그 아이콘.
  3. 카탈로그 창의 왼쪽에서 삭제할 카탈로그를 클릭합니다.
  4. 세부 정보 창에서 데이터베이스 만들기 단추 왼쪽에 있는 세 개의 점 메뉴를 클릭하고 삭제를 선택합니다.
  5. 카탈로그 삭제 대화 상자에서 삭제를 클릭합니다.

Sql

Notebook 또는 Databricks SQL 편집기에서 다음 SQL 명령을 실행합니다. 괄호 안의 항목은 선택 사항입니다. <catalog-name> 자리 표시자를 바꿉니다.

매개 변수 설명은 DROP CATALOG를 참조하세요.

CASCADE 옵션 없이 DROP CATALOG를 사용하는 경우 카탈로그를 삭제하려면 먼저 카탈로그에서 information_schema를 제외한 모든 스키마를 삭제해야 합니다. 여기에는 자동 생성된 default 스키마가 포함됩니다.

DROP CATALOG [ IF EXISTS ] <catalog-name> [ RESTRICT | CASCADE ]

예를 들어 vaccine이라는 카탈로그와 해당 스키마를 삭제하려면 다음을 수행합니다.

DROP CATALOG vaccine CASCADE

기본 카탈로그 관리

기본 카탈로그는 Unity 카탈로그에 대해 사용하도록 설정된 각 작업 영역에 대해 구성됩니다. 기본 카탈로그를 사용하면 카탈로그를 지정하지 않고도 데이터 작업을 수행할 수 있습니다. 데이터 작업을 수행할 때 최상위 카탈로그 이름을 생략하면 기본 카탈로그가 사용됩니다.

작업 영역 관리자는 관리 설정 UI를 사용하여 기본 카탈로그를 보거나 전환할 수 있습니다. Spark 구성을 사용하여 클러스터에 대한 기본 카탈로그를 설정할 수도 있습니다.

카탈로그를 지정하지 않는 명령(예 GRANT CREATE TABLE ON SCHEMA myschema TO mygroup: 카탈로그)은 다음 순서대로 카탈로그에 대해 평가됩니다.

  1. 세션에 대한 카탈로그가 문 또는 JDBC 설정을 사용하여 USE CATALOG 설정되어 있나요?
  2. Spark 구성 spark.databricks.sql.initial.catalog.namespace 이 클러스터에 설정되어 있나요?
  3. 클러스터에 대한 작업 영역 기본 카탈로그 집합이 있나요?

Unity 카탈로그를 사용하는 경우의 기본 카탈로그 구성

작업 영역에 대해 처음에 구성된 기본 카탈로그는 Unity 카탈로그에 대해 작업 영역을 사용하도록 설정한 방법에 따라 달라집니다.

  • Unity 카탈로그에 대해 자동으로 사용하도록 설정된 일부 작업 영역의 경우 작업 영역 카탈로그 가 기본 카탈로그로 설정되었습니다. Unity 카탈로그 자동 사용을 참조하세요.
  • 다른 모든 작업 영역의 경우 카탈로그가 hive_metastore 기본 카탈로그로 설정되었습니다.

기존 작업 영역 내에서 Hive 메타스토어에서 Unity 카탈로그로 전환하는 경우 일반적으로 Hive 메타스토어를 참조하는 기존 코드에 영향을 주지 않도록 기본 카탈로그로 사용하는 hive_metastore 것이 좋습니다.

기본 카탈로그 변경

작업 영역 관리자는 작업 영역의 기본 카탈로그를 변경할 수 있습니다. 클러스터를 만들거나 편집할 수 있는 권한이 있는 사용자는 클러스터에 대해 다른 기본 카탈로그를 설정할 수 있습니다.

Warning

기본 카탈로그를 변경하면 이에 의존하는 기존 데이터 작업이 중단될 수 있습니다.

작업 영역에 대해 다른 기본 카탈로그를 구성하려면 다음을 수행합니다.

  1. 작업 영역 관리자로 작업 영역에 로그인합니다.
  2. 작업 영역의 위쪽 표시줄에서 사용자 이름을 클릭하고 드롭다운에서 설정 선택합니다.
  3. 고급 탭을 클릭합니다.
  4. 작업 영역 행의 기본 카탈로그에서 카탈로그 이름을 입력하고 저장을 클릭합니다.

변경 내용을 적용하려면 SQL 웨어하우스 및 클러스터를 다시 시작합니다. 새로 시작하고 다시 시작한 모든 SQL 웨어하우스 및 클러스터는 이 카탈로그를 작업 영역 기본값으로 사용합니다.

클러스터에서 다음 Spark 구성을 설정하여 특정 클러스터의 기본 카탈로그를 재정의할 수도 있습니다. SQL 웨어하우스에는 이 방법을 사용할 수 없습니다.

spark.databricks.sql.initial.catalog.name

지침은 Spark 구성을 참조하세요.

현재 기본 카탈로그 보기

작업 영역에 대한 현재 기본 카탈로그를 얻으려면 Notebook 또는 SQL 편집기 쿼리에서 SQL 문을 사용할 수 있습니다. 작업 영역 관리자는 관리 설정 UI를 사용하여 기본 카탈로그를 가져올 수 있습니다.

관리 설정

  1. 작업 영역 관리자로 작업 영역에 로그인합니다.
  2. 작업 영역의 위쪽 표시줄에서 사용자 이름을 클릭하고 드롭다운에서 설정 선택합니다.
  3. 고급 탭을 클릭합니다.
  4. 작업 영역 행의 기본 카탈로그에서 카탈로그 이름을 봅니다.

Sql

SQL 웨어하우스 또는 Unity 카탈로그 규격 클러스터에서 실행되는 Notebook 또는 SQL 편집기 쿼리에서 다음 명령을 실행합니다. 작업 영역 기본 카탈로그는 세션에 대해 설정된 문이나 JDBC 설정이 없고 USE CATALOG 클러스터에 대해 구성이 설정되지 않은 spark.databricks.sql.initial.catalog.namespace 한 반환됩니다.

SELECT current_catalog();