Databricks-Databricks 델타 공유를 사용하여 공유된 데이터 읽기(받는 사람용)

이 문서에서는 Databricks에서 데이터 공유를 위한 보안 연결을 관리하는 Databricks-to-Databricks Delta Sharing 프로토콜을 사용하여 사용자와 공유된 데이터를 읽는 방법을 설명합니다. Delta Sharing 개방형 공유 프로토콜과 달리 Databricks-to-Databricks 프로토콜은 자격 증명 파일(토큰 기반 보안)이 필요하지 않습니다.

Databricks-Databricks 공유를 사용하려면 받는 사람으로서 Unity 카탈로그에 대해 사용하도록 설정된 Databricks 작업 영역에 액세스할 수 있어야 합니다.

Unity 카탈로그에 사용할 수 있는 Databricks 작업 영역이 없는 경우 델타 공유 공개 공유 프로토콜을 사용하여 데이터를 공유해야 하며 이 문서는 적용되지 않습니다. 델타 공유 열기 공유를 사용하여 공유된 데이터 읽기(받는 사람용)를 참조하세요.

팀에 공유 데이터를 제공하려면 어떻게 해야 할까요?

Databricks-to-Databricks 프로토콜을 사용하여 사용자와 공유된 데이터 및 Notebook을 읽으려면 Unity 카탈로그에 대해 사용하도록 설정된 Databricks 작업 영역의 사용자여야 합니다. 팀 구성원은 데이터 공급자에게 Unity 카탈로그 메타스토어에 대한 고유 식별자를 제공하고, 데이터 공급자는 해당 식별자를 사용하여 조직과의 보안 공유 연결을 만듭니다. 그런 다음 공유 데이터를 작업 영역에서 읽기 액세스에 사용할 수 있게 되고 데이터 공급자가 공유 테이블, 뷰, 볼륨 및 파티션에 대한 업데이트를 거의 실시간으로 작업 영역에 반영합니다.

참고 항목

공유 데이터 테이블, 뷰 및 볼륨에 대한 업데이트 작업 영역에 거의 실시간으로 표시됩니다. 그러나 열 변경(추가, 이름 바꾸기, 삭제)은 카탈로그 탐색기에 최대 1분 동안 표시되지 않을 수 있습니다. 마찬가지로 새 공유 및 공유 업데이트(예: 공유에 새 테이블 추가)는 1분 동안 캐시된 후에 보기 및 쿼리가 가능합니다.

사용자와 공유된 데이터를 읽으려면

  1. 팀의 사용자가 공유한 테이블, 뷰, 볼륨 및 Notebook에 대한 컨테이너인 공유를 찾아 해당 공유를 사용하여 카탈로그를 만듭니다. Databricks Unity 카탈로그의 모든 데이터에 대한 최상위 컨테이너입니다.
  2. 팀의 사용자가 카탈로그 및 카탈로그 내의 개체(스키마, 테이블, 뷰 및 볼륨)에 대한 액세스를 팀의 다른 구성원에게 부여하거나 거부합니다.
  3. 읽기 전용(또는READ VOLUME) 액세스 권한이 있는 Databricks의 다른 데이터 자산과 마찬가지로 액세스 권한이 부여된 테이블,SELECT 뷰 및 볼륨의 데이터를 읽습니다.
  4. 카탈로그에 대한 권한이 있는 한 공유에서 전자 필기장을 USE CATALOG 미리 확인하고 복제합니다.

필요한 권한

모든 공급자 및 공급자 공유에 대한 세부 정보를 나열하고 볼 수 있게 하려면 metastore 관리자이거나 USE PROVIDER 권한이 있어야 합니다. 다른 사용자는 자신이 소유한 공급자 및 공유에만 액세스할 수 있습니다.

공급자 공유에서 카탈로그를 만들려면 metastore 관리자, Unity 카탈로그 메타스토어에 대한 권한과 USE PROVIDER 권한이 모두 CREATE_CATALOG 있는 사용자 또는 공급자 개체의 권한과 소유권을 모두 CREATE_CATALOG 가진 사용자여야 합니다.

공유에서 만든 카탈로그의 스키마(데이터베이스), 테이블, 뷰 및 볼륨에 대한 읽기 전용 액세스 권한을 부여하는 기능은 일반적인 Unity 카탈로그 권한 계층 구조를 따릅니다. 공유에서 만든 카탈로그에서 Notebook을 보는 기능을 사용하려면 카탈로그에 USE CATALOG 대한 권한이 필요합니다. 델타 공유 카탈로그의 스키마, 테이블 및 볼륨에 대한 권한 관리를 참조 하세요.

공급자 및 공유 보기

데이터 공급자가 공유한 데이터를 읽으려면 공급자의 이름을 알고 공급자가 데이터를 공유한 후 Unity 카탈로그 메타스토어에 저장된 개체를 공유해야 합니다.

공급자 개체는 데이터를 공유한 조직의 Unity 카탈로그 메타스토어, 클라우드 플랫폼 및 지역을 나타냅니다.

공유 개체는 공급자가 공유한 테이블, 볼륨 및 뷰를 나타냅니다.

사용자와 데이터를 공유한 모든 공급자 보기

사용 가능한 데이터 공급자 목록을 보려면 Azure Databricks Notebook 또는 Databricks SQL 쿼리 편집기에서 카탈로그 탐색기, Databricks Unity 카탈로그 CLI 또는 SHOW PROVIDERS SQL 명령을 사용할 수 있습니다.

필요한 권한: metastore 관리자이거나 USE PROVIDER 권한이 있어야 합니다. 다른 사용자는 자신이 소유한 공급자 및 공급자 공유에만 액세스할 수 있습니다.

자세한 내용은 공급자 보기를 참조하세요.

공급자 세부 정보 보기

공급자에 대한 세부 정보를 보려면 Azure Databricks Notebook 또는 Databricks SQL 쿼리 편집기에서 카탈로그 탐색기, Databricks Unity 카탈로그 CLI 또는 DESCRIBE PROVIDER SQL 명령을 사용할 수 있습니다.

필요한 권한: metastore 관리자이거나 권한이 있거나 USE PROVIDER 공급자 개체를 소유해야 합니다.

자세한 내용은 자 세부 정보 보기를 참조하세요.

공유 보기

공급자가 공유한 공유를 보려면 Azure Databricks Notebook 또는 Databricks SQL 쿼리 편집기에서 카탈로그 탐색기, Databricks Unity 카탈로그 CLI 또는 SHOW SHARES IN PROVIDER SQL 명령을 사용할 수 있습니다.

필요한 권한: metastore 관리자이거나 권한이 있거나 USE PROVIDER 공급자 개체를 소유해야 합니다.

자세한 내용은 공급자가 공유한 공유 보기를 참조하세요.

공유 테이블 또는 볼륨의 데이터 액세스

공유 테이블 또는 볼륨에서 데이터를 읽으려면 다음을 수행합니다.

  1. 권한 있는 사용자는 테이블 또는 볼륨이 포함된 공유에서 카탈로그를 만들어야 합니다. 메타스토어 관리자, Unity 카탈로그 메타스토어에 대한 권한과 USE PROVIDER 권한이 모두 CREATE_CATALOG 있는 사용자 또는 공급자 개체의 권한과 소유권을 모두 CREATE_CATALOG 가진 사용자일 수 있습니다.
  2. 해당 사용자 또는 동일한 권한을 가진 사용자는 공유 테이블 또는 볼륨에 대한 액세스 권한을 부여해야 합니다.
  3. Unity 카탈로그 메타스토어에 등록된 다른 데이터 자산과 마찬가지로 테이블 또는 볼륨에 액세스할 수 있습니다.

공유에서 카탈로그 만들기

공유의 데이터를 팀에서 액세스할 수 있도록 하려면 공유에서 카탈로그를 만들어야 합니다. 공유에서 카탈로그를 만들려면 Azure Databricks Notebook 또는 Databricks SQL 쿼리 편집기에서 카탈로그 탐색기, Databricks Unity 카탈로그 CLI 또는 SQL 명령을 사용할 수 있습니다.

필요한 권한: 메타스토어 관리자, Unity 카탈로그 메타스토어에 대한 권한과 USE PROVIDER 권한이 모두 CREATE_CATALOG 있는 사용자 또는 공급자 개체의 권한과 소유권을 모두 CREATE_CATALOG 가진 사용자입니다.

참고 항목

공유에 보기가 포함된 경우 공급자의 메타스토어에 보기가 포함된 카탈로그 이름과 다른 카탈로그 이름을 사용해야 합니다.

카탈로그 탐색기

  1. Azure Databricks 작업 영역에서 카탈로그를 클릭합니다카탈로그 아이콘.
  2. 왼쪽 창에서 델타 공유 메뉴를 확장하고 공유한 항목을 선택합니다.
  3. 공급자 탭에서 공급자를 선택합니다.
  4. 공유 탭에서 공유를 찾고 공유 행에서 카탈로그 만들기를 클릭합니다.
  5. 카탈로그의 이름 및 선택적 주석을 입력합니다.
  6. 만들기를 클릭합니다.

Sql

Notebook 또는 Databricks SQL 쿼리 편집기에서 다음 명령을 실행합니다.

CREATE CATALOG [IF NOT EXISTS] <catalog-name>
USING SHARE <provider-name>.<share-name>;

Cli

databricks unity-catalog catalogs create --name <catalog-name> /
                                    --provider <provider-name> /
                                    --share <share-name>

공유에서 만든 카탈로그에는 Delta Sharing의 카탈로그 유형이 있습니다. 카탈로그 탐색기의 카탈로그 세부 정보 페이지에서 또는 Notebook 또는 Databricks SQL 쿼리에서 DESCRIBE CATALOG SQL 명령을 실행하여 형식을 볼 수 있습니다. 모든 공유 카탈로그는 카탈로그 탐색기 왼쪽 창의 카탈로그 > 공유 아래에 나열됩니다.

델타 공유 카탈로그는 Unity 카탈로그 메타스토어의 일반 카탈로그와 동일한 방식으로 관리할 수 있습니다. 카탈로그 탐색기, Databricks CLI 및 , ALTER CATALOGDESCRIBE CATALOG및 SQL 명령을 사용하여 SHOW CATALOGS델타 공유 카탈로그를 보고, 업데이트하고DROP CATALOG, 삭제할 수 있습니다.

공유에서 만든 델타 공유 카탈로그 아래의 3개 수준 네임스페이스 구조는 Unity 카탈로그 catalog.schema.table 의 일반 카탈로그 아래와 동일합니다. 또는 catalog.schema.volume.

공유 카탈로그의 테이블 및 볼륨 데이터는 읽기 전용이므로 다음과 같은 읽기 작업을 수행할 수 있습니다.

  • DESCRIBE, SHOWSELECT 테이블의 경우
  • DESCRIBE VOLUME, LIST <volume-path>, SELECT * FROM <format>.'<volume_path>'COPY INTO 볼륨의 경우

공유 카탈로그의 Notebook은 카탈로그에 있는 모든 사용자가 USE CATALOG 미리 보기 및 복제할 수 있습니다.

공유 카탈로그의 모델은 등록된 모델에 대한 권한 및 모델을 USE SCHEMA 포함하는 스키마 및 카탈로그에 대한 권한과 USE CATALOG 같은 권한을 EXECUTE 가진 모든 사용자가 유추를 위해 읽고 로드할 수 있습니다.

델타 공유 카탈로그에서 스키마, 테이블 및 볼륨에 대한 권한 관리

기본적으로 카탈로그 작성자는 Delta Sharing 카탈로그에 있는 모든 데이터 개체의 소유자이며, 해당 개체에 대한 사용 권한을 관리할 수 있습니다.

일부 작업 영역은 상속을 제공하지 않는 레거시 보안 모델에 있을 수 있지만 권한은 아래로 상속됩니다. 상속 모델을 참조하세요. 카탈로그에서 SELECT 권한을 부여받은 사용자는 권한이 취소되지 않는 한 카탈로그의 모든 스키마 및 테이블에 대해 SELECT 권한을 갖습니다. 마찬가지로 카탈로그에 대한 권한을 부여받은 READ VOLUME 사용자는 해당 권한이 취소되지 않는 한 카탈로그의 모든 볼륨에 대한 권한을 갖 READ VOLUME 습니다. Delta Sharing 카탈로그 또는 Delta Sharing 카탈로그의 개체에 대한 쓰기 또는 업데이트 액세스 권한을 부여하는 권한은 부여할 수 없습니다.

카탈로그 소유자는 데이터 개체의 소유권을 다른 사용자 또는 그룹에 위임하여 해당 사용자에게 개체 사용 권한 및 수명 주기를 관리할 수 있는 권한을 부여할 수 있습니다.

Unity 카탈로그를 사용하여 데이터 개체에 대한 권한을 관리하는 방법은 Unity 카탈로그에서 권한 관리를 참조하세요.

공유 테이블의 데이터 읽기

Azure Databricks 사용자로 사용할 수 있는 도구(카탈로그 탐색기, Notebook, SQL 쿼리, Databricks CLI 및 Databricks REST API)를 사용하여 공유 테이블의 데이터를 읽을 수 있습니다. 테이블에 대한 SELECT 권한이 있어야 합니다.

공유 볼륨에서 데이터 읽기

Azure Databricks 사용자로 사용할 수 있는 도구(카탈로그 탐색기, Notebook, SQL 쿼리, Databricks CLI 및 Databricks REST API)를 사용하여 공유 볼륨의 데이터를 읽을 수 있습니다. 볼륨에 READ VOLUME 대한 권한이 있어야 합니다.

유추를 위해 공유 모델 로드

공유 모델을 로드하고 일괄 처리 유추에 사용하는 방법에 대한 자세한 내용은 유추를 위해 모델 로드를 참조하세요.

테이블의 기록 데이터 쿼리

기록이 테이블과 함께 공유되는 경우 버전 또는 타임스탬프를 기준으로 테이블 데이터를 쿼리할 수 있습니다. Databricks Runtime 12.2 LTS 이상이 필요합니다.

예시:

SELECT * FROM vaccine.vaccine_us.vaccine_us_distribution VERSION AS OF 3;
SELECT * FROM vaccine.vaccine_us.vaccine_us_distribution TIMESTAMP AS OF "2023-01-01 00:00:00";

또한 CDF(변경 데이터 피드)가 테이블과 함께 사용하도록 설정된 경우 CDF를 쿼리할 수 있습니다. 버전 및 타임스탬프가 모두 지원됩니다.

SELECT * FROM table_changes('vaccine.vaccine_us.vaccine_us_distribution', 0, 3);
SELECT * FROM table_changes('vaccine.vaccine_us.vaccine_us_distribution', "2023-01-01 00:00:00", "2022-02-01 00:00:00");

변경 데이터 피드에 대한 자세한 내용은 Azure Databricks에서 Delta Lake 변경 데이터 피드 사용을 참조하세요.

Apache Spark 구조적 스트리밍을 사용하여 테이블 쿼리

테이블이 기록과 공유되는 경우 Spark 구조적 스트리밍의 원본으로 사용할 수 있습니다. Databricks Runtime 12.2 LTS 이상이 필요합니다.

지원되는 옵션:

  • ignoreDeletes: 데이터를 삭제하는 트랜잭션을 무시합니다.
  • ignoreChanges: (파티션 내) 또는 OVERWRITE와 같은 데이터 변경 작업으로 DELETEUPDATEMERGE INTO인해 원본 테이블에서 파일을 다시 작성한 경우 업데이트를 다시 처리합니다. 변경되지 않은 행은 계속 내보낼 수 있습니다. 따라서 다운스트림 소비자는 중복 항목을 처리할 수 있어야 합니다. 삭제는 다운스트림으로 전파되지 않습니다. ignoreChangesignoreDeletes를 포함합니다. 따라서 사용하는 ignoreChanges경우 원본 테이블에 대한 삭제 또는 업데이트로 인해 스트림이 중단되지 않습니다.
  • startingVersion: 시작할 공유 테이블 버전입니다. 이 버전(포함)부터 시작하는 모든 테이블 변경 내용은 스트리밍 원본에서 읽습니다.
  • startingTimestamp: 시작할 타임스탬프입니다. 타임스탬프(포함) 또는 그 이후에 커밋된 모든 테이블 변경 내용은 스트리밍 원본에서 읽습니다. 예: "2023-01-01 00:00:00.0"
  • maxFilesPerTrigger: 모든 마이크로 일괄 처리에서 고려할 새 파일의 수입니다.
  • maxBytesPerTrigger: 각 마이크로 일괄 처리에서 처리되는 데이터의 양입니다. 이 옵션은 "소프트 최대"를 설정합니다. 즉, 일괄 처리는 이 정도의 데이터를 처리하며, 가장 작은 입력 단위가 이 제한보다 큰 경우 스트리밍 쿼리가 앞으로 이동하도록 하기 위해 제한보다 더 많이 처리할 수 있습니다.
  • readChangeFeed: Stream에서 공유 테이블의 변경 데이터 피드를 읽습니다.

지원되지 않는 옵션:

  • Trigger.availableNow

구조적 스트리밍 쿼리 샘플

Scala
spark.readStream.format("deltaSharing")
.option("startingVersion", 0)
.option("ignoreChanges", true)
.option("maxFilesPerTrigger", 10)
.table("vaccine.vaccine_us.vaccine_us_distribution")
Python
spark.readStream.format("deltaSharing")\
.option("startingVersion", 0)\
.option("ignoreDeletes", true)\
.option("maxBytesPerTrigger", 10000)\
.table("vaccine.vaccine_us.vaccine_us_distribution")

테이블에서 CDF(변경 데이터 피드)를 사용하도록 설정한 경우 CDF 읽기를 스트리밍할 수 있습니다.

spark.readStream.format("deltaSharing")
.option("readChangeFeed", "true")
.table("vaccine.vaccine_us.vaccine_us_distribution")

삭제 벡터 또는 열 매핑을 사용하도록 설정된 테이블 읽기

Important

이 기능은 공개 미리 보기 상태입니다.

삭제 벡터는 공급자가 공유 델타 테이블에서 사용하도록 설정할 수 있는 스토리지 최적화 기능입니다. 삭제 벡터가란?을 참조하세요.

Azure Databricks는 델타 테이블에 대한 열 매핑도 지원합니다. Delta Lake 열 매핑을 사용하여 열 이름 바꾸기 및 삭제를 참조 하세요.

공급자가 삭제 벡터 또는 열 매핑을 사용하도록 설정된 테이블을 공유한 경우 SQL 웨어하우스 또는 Databricks Runtime 14.1 이상을 실행하는 클러스터를 사용하여 테이블에서 일괄 읽기를 수행할 수 있습니다. CDF 및 스트리밍 쿼리에는 Databricks Runtime 14.2 이상이 필요합니다.

일괄 처리 쿼리는 공유 테이블의 테이블 기능에 따라 자동으로 확인할 responseFormat 수 있으므로 있는 그대로 수행할 수 있습니다.

CDF(변경 데이터 피드)를 읽거나 삭제 벡터 또는 열 매핑을 사용하도록 설정된 공유 테이블에서 스트리밍 쿼리를 수행하려면 추가 옵션을 responseFormat=delta설정해야 합니다.

다음 예제에서는 일괄 처리, CDF 및 스트리밍 쿼리를 보여 줍니다.

import org.apache.spark.sql.SparkSession

// Batch query
spark.read.format("deltaSharing").table(<tableName>)

// CDF query
spark.read.format("deltaSharing")
  .option("readChangeFeed", "true")
  .option("responseFormat", "delta")
  .option("startingVersion", 1)
  .table(<tableName>)

// Streaming query
spark.readStream.format("deltaSharing").option("responseFormat", "delta").table(<tableName>)

공유 보기 읽기

Important

이 기능은 공개 미리 보기 상태입니다.

참고 항목

보기 공유는 Databricks-to-Databricks 공유에서만 지원됩니다.

공유 뷰를 읽는 것은 공유 테이블을 읽는 것과 동일하며 다음과 같은 예외가 있습니다.

컴퓨팅 요구 사항:

  • Azure Databricks 계정이 공급자와 다른 경우 서버리스 SQL 웨어하우스사용하여 공유 뷰를 쿼리해야 합니다.
  • 공급자가 동일한 Azure Databricks 계정에 있는 경우 SQL 웨어하우스를 사용할 수 있으며 공유 액세스 모드를 사용하는 클러스터를 사용할 수도 있습니다.

보기에 대한 제한 사항:

공유 보기를 참조하는 뷰는 만들 수 없습니다.

공유 제한 보기:

공유 테이블 또는 공유 보기를 참조하는 뷰는 공유할 수 없습니다.

명명 요구 사항:

뷰가 포함된 공유 카탈로그에 사용하는 카탈로그 이름은 뷰에서 참조하는 테이블을 포함하는 공급자 카탈로그와 같을 수 없습니다. 예를 들어 공유 뷰가 카탈로그에 포함되어 있고 해당 뷰에서 test 참조되는 공급자의 테이블 중 하나가 공급자의 test 카탈로그에 포함된 경우 쿼리에서 네임스페이스 충돌 오류가 발생합니다. 공유에서 카탈로그 만들기를 참조하세요.

기록 및 스트리밍:

기록을 쿼리하거나 보기를 스트리밍 원본으로 사용할 수 없습니다.

JDBC/ODBC:

이 문서의 지침은 Azure Databricks 사용자 인터페이스, 특히 Unity 카탈로그 구문 및 인터페이스를 사용하여 공유 데이터를 읽는 데 중점을 줍니다. Databricks JDBC/ODBC 드라이버를 사용하여 Tableau 및 Power BI와 같은 Apache Spark, Python 및 BI 도구를 사용하여 공유 보기를 쿼리할 수도 있습니다. Databricks JDBC/ODBC 드라이버를 사용하여 연결하는 방법을 알아보려면 Databricks ODBC 및 JDBC 드라이버를 참조 하세요.

공유 전자 필기장 읽기

공유 전자 필기장 파일을 미리 보기 및 복제하려면 카탈로그 탐색기를 사용할 수 있습니다.

필요한 권한: 공유에서 만든 카탈로그에 대한 권한이 있는 USE CATALOG 카탈로그 소유자 또는 사용자입니다.

  1. Azure Databricks 작업 영역에서 카탈로그를 클릭합니다카탈로그 아이콘.

  2. 왼쪽 창에서 카탈로그 메뉴를 확장하고 공유에서 만든 카탈로그를 찾아 선택합니다.

  3. 기타 자산 탭에 공유 전자 필기장 파일이 표시됩니다.

  4. 공유 전자 필기장 파일의 이름을 클릭하여 미리 봅니다.

  5. (선택 사항) 복제 단추를 클릭하여 공유 전자 필기장 파일을 작업 영역으로 가져옵니다.

    1. 대화 상자에 복제 대화 상자에서 필요에 따라 새 이름을 입력한 다음 전자 필기장 파일을 복제할 작업 영역 폴더를 선택합니다.
    2. 복제를 클릭합니다.
    3. Notebook이 복제되면 성공적으로 복제되었음을 알리는 대화 상자가 나타납니다. 대화 상자의 전자 필기장 편집기에서 표시를 클릭하여 전자 필기장 편집기에서 볼 수 있습니다.

    Databricks Notebook 소개를 참조 하세요.