전달자 토큰과 공유된 데이터 읽기

이 페이지에서는 전달자 토큰과 함께 OpenSharing 오픈 공유 프로토콜을 사용하여 공유된 데이터를 읽는 방법을 설명합니다. 여기에는 다음 도구를 사용하여 공유 데이터를 읽기 위한 지침이 포함되어 있습니다.

이 공유 모델에서는 데이터 공급자가 팀 구성원과 공유하는 자격 증명 파일을 사용하여 공유 데이터에 대한 안전한 읽기 액세스 권한을 얻습니다. 자격 증명이 유효하고 제공자가 데이터를 공유하는 한, 액세스는 지속됩니다. 제공자는 자격 증명의 만료 및 회전을 관리합니다. 데이터에 대한 업데이트는 거의 실시간으로 사용할 수 있습니다. 공유 데이터의 복사본을 읽고 만들 수 있지만 원본 데이터는 수정할 수 없습니다.

메모

Databricks-to-Databricks OpenSharing을 사용하여 데이터를 공유한 경우 데이터에 액세스하기 위해 자격 증명 파일이 필요하지 않으며 이 페이지는 적용되지 않습니다. 대신 Databricks-to-Databricks OpenSharing을 사용하여 공유된 데이터 읽기(받는 사람용)를 참조하세요.

다음 섹션에서는 Apache Spark, pandasPower BI 및 Iceberg 클라이언트를 사용하여 자격 증명 파일을 사용하여 공유 데이터에 액세스하고 읽는 방법을 설명합니다. OpenSharing 커넥터의 전체 목록 및 사용 방법에 대한 자세한 내용은 OpenSharing 오픈 소스 설명서를 참조하세요. 공유 데이터를 액세스하는 데 문제가 발생하면 데이터 제공업체에 문의하세요.

시작하기 전에

팀 구성원은 데이터 공급자가 공유하는 자격 증명 파일을 다운로드하고 보안 채널을 사용하여 해당 파일 또는 파일 위치를 사용자와 공유해야 합니다. Databricks-to-Open 공유 모델에서 액세스 가져오기를 참조하세요.

커넥터 관련 설명서는 자격 증명 다운로드 페이지를 참조하세요.

Iceberg 클라이언트: 공유 데이터 읽기

Snowflake, Trino, Flink 및 Spark와 같은 외부 Iceberg 클라이언트를 사용하여 Apache Iceberg REST 카탈로그 API를 사용하여 복사 권한이 없는 공유 데이터 자산을 읽습니다.

연결 자격 증명 가져오기

외부 Iceberg 클라이언트를 사용하여 공유 데이터 자산에 액세스하기 전에 다음 자격 증명을 수집합니다.

  • Iceberg REST 카탈로그 엔드포인트
  • 유효한 전달자 토큰
  • 공유 이름
  • (선택 사항) 네임스페이스 또는 스키마 이름
  • (선택 사항) 테이블 이름

Iceberg REST 카탈로그 엔드포인트(icebergEndpoint) 및 전달자 토큰은 데이터 공급자가 공유한 자격 증명 파일에 있습니다. 자세한 내용은 시작하기 전에를 참조하세요. 공유 이름, 네임스페이스 및 테이블 이름은 OpenSharing API를 사용하여 프로그래밍 방식으로 검색할 수 있습니다.

중요합니다

자격증명 icebergEndpoint 파일에 있으며 형식은 <workspace-url>/api/2.0/delta-sharing/metastores/<metastore-id>/iceberg입니다.

다음 예제에서는 추가 자격 증명을 가져오는 방법을 보여 줍니다. 필요한 경우 자격 증명 파일에서 엔드포인트, Iceberg 엔드포인트 및 전달자 토큰을 입력합니다.

// List shares
curl -X GET "<endpoint>/shares" \
   -H "Authorization: Bearer <bearerToken>"

// List namespaces
curl -X GET "<icebergEndpoint>/v1/shares/<share>/namespaces" \
   -H "Authorization: Bearer <bearerToken>"

// List tables
curl -X GET "<icebergEndpoint>/v1/shares/<share>/namespaces/<namespace>/tables" \
   -H "Authorization: Bearer <bearerToken>"

메모

이 메서드는 항상 가장 up-to-date 자산 목록을 검색합니다. 그러나 인터넷에 액세스해야 하며 코드 없는 환경에서 통합하기가 더 어려울 수 있습니다.

Iceberg 카탈로그 구성

필요한 연결 자격 증명을 얻은 후 Iceberg REST 카탈로그 엔드포인트를 사용하여 테이블을 만들고 쿼리하도록 클라이언트를 구성합니다.

  1. 각 공유에 대해 카탈로그 통합을 만듭니다.

    USE ROLE ACCOUNTADMIN;
    
    CREATE OR REPLACE CATALOG INTEGRATION <CATALOG_PLACEHOLDER>
    CATALOG_SOURCE = ICEBERG_REST
    TABLE_FORMAT = ICEBERG
    REST_CONFIG = (
       CATALOG_URI = '<icebergEndpoint>',
       WAREHOUSE = '<share_name>',
       ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
    )
    REST_AUTHENTICATION = (
       TYPE = BEARER,
       BEARER_TOKEN = '<bearerToken>'
    )
    ENABLED = TRUE;
    
  2. 필요에 따라 메타데이터를 최신 상태로 유지하도록 추가 REFRESH_INTERVAL_SECONDS 합니다. 카탈로그 업데이트 빈도에 따라 값을 설정합니다.

    REFRESH_INTERVAL_SECONDS = 30
    
  3. 카탈로그가 구성되면 카탈로그에서 데이터베이스를 만듭니다. 그러면 해당 카탈로그의 모든 스키마와 테이블이 자동으로 만들어집니다.

    CREATE DATABASE <DATABASE_PLACEHOLDER>
    LINKED_CATALOG = (
       CATALOG = <CATALOG_PLACEHOLDER>
    );
    
  4. 공유가 성공적인지 확인하려면 데이터베이스의 테이블에서 쿼리합니다. Azure Databricks의 공유 데이터가 표시됩니다.

결과가 비어 있거나 오류가 발생하는 경우 다음 일반적인 문제 해결 단계를 수행합니다.

  • 권한, 스냅샷 생성 상태 및 REST 자격 증명을 다시 확인합니다.
  • 데이터 공급자에게 문의하세요.
  • Iceberg 클라이언트와 관련된 설명서를 참조하세요.

예: 다른 Iceberg 클라이언트를 사용하여 공유 테이블에 액세스

다음 예제에서는 연결 자격 증명을 얻은 후 Snowflake, Apache Spark, PyIceberg 및 REST API와 같은 외부 Iceberg 클라이언트를 사용하여 오픈 쉐어드 테이블에 액세스하는 방법을 보여 줍니다. 연결 자격 증명 가져오기에 대한 자세한 내용은 시작하기 전에 참조하세요.

Snowflake

Snowflake에서 공유 데이터 자산을 읽으려면 다운로드한 자격 증명 파일을 업로드하고 필요한 SQL 명령을 생성합니다.

  1. OpenSharing 활성화 링크에서 Snowflake 아이콘을 클릭합니다.

  2. Snowflake 통합 페이지에서 데이터 공급자로부터 받은 자격 증명 파일을 업로드합니다.

    Snowflake에서 자격 증명 파일 업로드

  3. 자격 증명을 로드한 후 Snowflake에서 액세스하려는 공유를 선택합니다.

  4. 원하는 자산을 선택한 후 SQL 생성 을 클릭합니다.

    Snowflake에 대한 SQL 명령 생성

  5. 생성된 SQL을 복사하여 Snowflake 워크시트에 붙여넣습니다. 사용하려는 카탈로그의 이름을 CATALOG_PLACEHOLDER로 바꾸고, 사용하려는 데이터베이스의 이름을 DATABASE_PLACEHOLDER로 바꾸세요.

제한 사항

Snowflake에서 Iceberg REST 카탈로그에 연결하는 경우 다음과 같은 제한 사항이 있습니다.

Apache Spark

Apache Spark를 사용하여 공유 테이블에 액세스하려면 다음 설정을 사용하여 Iceberg REST 카탈로그 API를 구성합니다. <spark-catalog-name> 카탈로그의 이름으로 바꾸고 연결 자격 증명을 제공합니다.

"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",

# Configuration for accessing tables shared using Delta Sharing
"spark.sql.catalog.<spark-catalog-name>":"org.apache.iceberg.spark.SparkCatalog",
"spark.sql.catalog.<spark-catalog-name>.type": "rest",
"spark.sql.catalog.<spark-catalog-name>.uri": "<icebergEndpoint>",
"spark.sql.catalog.<spark-catalog-name>.token": "<bearerToken>",
"spark.sql.catalog.<spark-catalog-name>.warehouse":"<share_name>",
"spark.sql.catalog.<spark-catalog-name>.scope":"all-apis"

PyIceberg

PyIceberg 는 JVM을 사용하지 않고 Iceberg 테이블에 액세스하기 위한 Python 구현입니다. PyIceberg는 pyarrow 데이터 읽기 및 테이블 메타데이터 검사와 같은 테이블 작업이 필요합니다. 추가 기능으로 PyIceberg를 설치합니다.pyarrow

pip install "pyiceberg[pyarrow]"

공유 테이블에 액세스하려면 PyIceberg 구성 파일에 다음 카탈로그 구성을 추가합니다.

catalog:
  delta_sharing:
    type: rest
    uri: <icebergEndpoint>
    warehouse: <share_name>
    token: <bearerToken>

REST API

다음 curl 예제와 같은 REST API 호출을 사용하여 테이블을 로드하고 데이터 파일에 액세스하기 위한 임시 자격 증명과 함께 해당 메타데이터를 검색합니다.

curl -X GET -H "Authorization: Bearer <bearerToken>" -H "Accept: application/json" \
<icebergEndpoint>/v1/shares/<share_name>/namespaces/<schema_name>/tables/<table_name>

응답에는 Iceberg 테이블 메타데이터, S3 위치 및 클라이언트가 데이터 파일을 읽을 수 있도록 하는 임시 AWS 자격 증명이 포함됩니다.

{
  "metadata-location": "s3://bucket/path/to/iceberg/table/metadata/file",
  "metadata": <iceberg-table-metadata-json>,
  "config": {
    "expires-at-ms": "<epoch-ts-in-millis>",
    "s3.access-key-id": "<temporary-s3-access-key-id>",
    "s3.session-token": "<temporary-s3-session-token>",
    "s3.secret-access-key": "<temporary-secret-access-key>",
    "client.region": "<aws-bucket-region-for-metadata-location>"
  }
}

Iceberg 클라이언트 제한 사항

다음 제한 사항은 Iceberg 클라이언트에서 OpenSharing 데이터를 쿼리할 때 적용됩니다.

  • 네임스페이스에 테이블을 나열할 때 네임스페이스에 100개 이상의 공유 뷰가 포함된 경우 응답은 처음 100개의 보기로 제한됩니다.

Apache Spark: 공유 데이터 읽기

공유 데이터를 Spark 3.x 이상을 사용하여 액세스하려면 다음 단계를 따르십시오.

이러한 지침에서는 데이터 공급자가 공유한 자격 증명 파일에 액세스할 수 있다고 가정합니다. Databricks-to-Open 공유 모델에서 액세스 가져오기를 참조하세요.

중요합니다

절대 경로를 사용하여 Apache Spark에서 자격 증명 파일에 액세스할 수 있는지 확인합니다. 경로는 클라우드 개체 또는 Unity 카탈로그 볼륨을 참조할 수 있습니다.

메모

Unity 카탈로그에 대해 사용하도록 설정된 Azure Databricks 작업 영역에서 Spark를 사용하고 가져오기 공급자 UI를 사용하여 공급자를 가져오고 공유하는 경우 이 섹션의 지침은 적용되지 않습니다. Unity Catalog에 등록된 다른 테이블과 마찬가지로 공유 테이블에 액세스할 수 있습니다. delta-sharing Python 커넥터를 설치하거나 자격 증명 파일의 경로를 제공할 필요가 없습니다. 공급자 가져오기 및 Azure Databricks에서 공유 데이터 읽기를 참조하세요.

OpenSharing Python 및 Spark 커넥터 설치

공유된 데이터와 관련된 메타데이터, 예를 들어 당신에게 공유된 테이블 목록에 접근하려면 다음의 절차를 따르세요. 이 예제는 파이썬을 사용합니다.

  1. 델타 공유 Python 커넥터를 설치합니다. Python 커넥터 제한 사항에 대한 자세한 내용은 OpenSharing Python 커넥터 제한을 참조하세요.

    pip install delta-sharing
    
  2. Apache Spark 커넥터를 설치합니다.

Spark를 사용하여 공유된 테이블 나열하기

공유된 항목에서 테이블을 나열하십시오. 다음 예에서 <profile-path>을(를) 자격 증명 파일의 위치로 교체하세요.

import delta_sharing

client = delta_sharing.SharingClient(f"<profile-path>/config.share")

client.list_all_tables()

결과는 여러 개의 테이블 배열과 각 테이블에 대한 메타데이터로 구성됩니다. 다음 출력은 두 개의 표를 보여줍니다.

Out[10]: [Table(name='example_table', share='example_share_0', schema='default'), Table(name='other_example_table', share='example_share_0', schema='default')]

출력이 비어 있거나 예상한 테이블이 없는 경우 데이터 공급자에게 문의하세요.

Spark를 사용하여 공유 데이터를 액세스합니다.

다음 변수들을 바꿔가며 다음을 실행하십시오.

  • <profile-path>: 자격 증명 파일의 위치.
  • <share-name>: 테이블의 share= 값입니다.
  • <schema-name>: 테이블의 schema= 값입니다.
  • <table-name>: 테이블의 name= 값입니다.
  • <version-as-of>: 선택 사항. 데이터를 로드할 테이블의 버전. 데이터 제공자가 테이블의 기록을 공유하는 경우에만 작동합니다. delta-sharing-spark 0.5.0 이상이 필요합니다.
  • <timestamp-as-of>: 선택 사항. 주어진 타임스탬프 이전 또는 해당 시점의 버전에서 데이터를 불러옵니다. 데이터 제공자가 테이블의 기록을 공유하는 경우에만 작동합니다. delta-sharing-spark 0.6.0 이상 필요합니다.

파이썬

delta_sharing.load_as_spark(f"<profile-path>#<share-name>.<schema-name>.<table-name>", version=<version-as-of>)

spark.read.format("deltaSharing")\
.option("versionAsOf", <version-as-of>)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")\
.limit(10)

delta_sharing.load_as_spark(f"<profile-path>#<share-name>.<schema-name>.<table-name>", timestamp=<timestamp-as-of>)

spark.read.format("deltaSharing")\
.option("timestampAsOf", <timestamp-as-of>)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")\
.limit(10)

Scala

spark.read.format("deltaSharing")
.option("versionAsOf", <version-as-of>)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")
.limit(10)

spark.read.format("deltaSharing")
.option("timestampAsOf", <version-as-of>)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")
.limit(10)

스파크를 사용하여 공유 변경 데이터 피드를 액세스하기

사용자와 테이블 기록을 공유하고 원본 테이블에서 CDF(변경 데이터 피드)를 사용하도록 설정한 경우 다음을 실행하여 변경 데이터 피드에 액세스하여 이러한 변수를 바꿉니다. delta-sharing-spark 0.5.0 이상이 필요합니다.

하나의 시작 매개 변수를 제공해야 합니다.

  • <profile-path>: 자격 증명 파일의 위치.
  • <share-name>: 테이블의 share= 값입니다.
  • <schema-name>: 테이블의 schema= 값입니다.
  • <table-name>: 테이블의 name= 값입니다.
  • <starting-version>: 선택 사항. 쿼리의 시작 버전, 포함된 Long 타입으로 지정합니다.
  • <ending-version>: 선택 사항. 쿼리의 끝 버전, 포함됨. 종료 버전이 제공되지 않으면 API는 최신 테이블 버전을 사용합니다.
  • <starting-timestamp>: 선택 사항. 쿼리의 시작 타임스탬프는 이 타임스탬프보다 크거나 같은 버전으로 변환됩니다. 형식 yyyy-mm-dd hh:mm:ss[.fffffffff]으로 문자열로 지정합니다.
  • <ending-timestamp>: 선택 사항. 쿼리의 종료 타임스탬프, 이것은 이 타임스탬프보다 이전에 생성되었거나 이 타임스탬프와 같은 버전으로 변환됩니다. 형식 yyyy-mm-dd hh:mm:ss[.fffffffff]으로 문자열로 지정하십시오.

파이썬

delta_sharing.load_table_changes_as_spark(f"<profile-path>#<share-name>.<schema-name>.<table-name>",
  starting_version=<starting-version>,
  ending_version=<ending-version>)

delta_sharing.load_table_changes_as_spark(f"<profile-path>#<share-name>.<schema-name>.<table-name>",
  starting_timestamp=<starting-timestamp>,
  ending_timestamp=<ending-timestamp>)

spark.read.format("deltaSharing").option("readChangeFeed", "true")\
.option("startingVersion", <starting-version>)\
.option("endingVersion", <ending-version>)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

spark.read.format("deltaSharing").option("readChangeFeed", "true")\
.option("startingTimestamp", <starting-timestamp>)\
.option("endingTimestamp", <ending-timestamp>)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

Scala

spark.read.format("deltaSharing").option("readChangeFeed", "true")
.option("startingVersion", <starting-version>)
.option("endingVersion", <ending-version>)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

spark.read.format("deltaSharing").option("readChangeFeed", "true")
.option("startingTimestamp", <starting-timestamp>)
.option("endingTimestamp", <ending-timestamp>)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

출력이 비어 있거나 예상한 데이터가 없는 경우 데이터 공급자에게 문의하세요.

Spark Structured Streaming을 사용하여 공유 테이블에 접근하기

테이블 기록이 당신과 공유된 경우, 공유된 데이터를 스트리밍으로 읽을 수 있습니다. delta-sharing-spark 0.6.0 이상 필요합니다.

지원되는 옵션:

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

지원되는 트리거:

  • Trigger.ProcessingTime: 명시적 트리거가 지정되지 않은 경우 사용되는 기본 트리거입니다. 데이터는 연속 마이크로 일괄 처리로 처리됩니다.
  • Trigger.AvailableNow: 쿼리는 시작 시 공유 테이블의 서버 측 버전을 캡처하고, maxFilesPerTriggermaxVersionsPerRpc를 준수하는 여러 개의 마이크로 배치로 백로그를 처리하며, 캡처된 버전을 모두 소진하면 종료됩니다. delta-sharing-spark 1.4.0 이상이 필요합니다. 이전 버전은 maxVersionsPerRpc을 준수하지 않는 Trigger.AvailableNow 래퍼를 대신 사용합니다.
  • Trigger.Once: 사용 중단됨; 대신 Trigger.AvailableNow을 사용하세요. delta-sharing-spark의 버전이 1.4.0 미만이면 Trigger.AvailableNowmaxVersionsPerRpc를 준수하지 않는 래퍼를 대신 사용합니다.

구조적 스트림 쿼리 샘플

파이썬
spark.readStream.format("deltaSharing")\
.option("startingVersion", 0)\
.option("ignoreDeletes", true)\
.option("maxBytesPerTrigger", 10000)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")
Scala
spark.readStream.format("deltaSharing")
.option("startingVersion", 0)
.option("ignoreChanges", true)
.option("maxFilesPerTrigger", 10)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

구조적 스트리밍 개념 참조하세요.

삭제 벡터 또는 컬럼 매핑이 활성화된 테이블 읽기

중요합니다

이 기능은 공개 미리보기 단계에 있습니다.

삭제 벡터는 공유된 델타 테이블에서 공급자가 활성화할 수 있는 스토리지 최적화 기능입니다. Databricks의 삭제 벡터를 참조하세요.

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

제공자가 삭제 벡터 또는 열 매핑이 활성화된 테이블을 공유한 경우, delta-sharing-spark 3.1 이상의 버전에서 실행 중인 컴퓨트를 사용하여 테이블을 읽을 수 있습니다. Databricks 클러스터를 사용하는 경우, Databricks Runtime 14.1 이상을 실행하는 클러스터를 통해 배치 읽기를 수행할 수 있습니다. CDF 및 스트리밍 쿼리에는 Databricks Runtime 14.2 이상이 필요합니다.

공유 테이블의 테이블 기능을 기반으로 자동으로 responseFormat을 해결할 수 있으므로 배치 쿼리를 있는 그대로 실행할 수 있습니다.

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

다음은 일괄 처리, CDF 및 스트리밍 쿼리에 대한 예제입니다.

import org.apache.spark.sql.SparkSession

val spark = SparkSession
        .builder()
        .appName("...")
        .master("...")
        .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension")
        .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
        .getOrCreate()

val tablePath = "<profile-file-path>#<share-name>.<schema-name>.<table-name>"

// Batch query
spark.read.format("deltaSharing").load(tablePath)

// CDF query
spark.read.format("deltaSharing")
  .option("readChangeFeed", "true")
  .option("responseFormat", "delta")
  .option("startingVersion", 1)
  .load(tablePath)

// Streaming query
spark.readStream.format("deltaSharing").option("responseFormat", "delta").load(tablePath)

공유 테이블의 행 추적 열 읽기

데이터 공급자가 공유 테이블에서 행 추적을 사용하도록 설정한 경우 Scala Spark를 사용하여 행 추적 메타데이터 열을 쿼리할 수 있습니다. 사용 가능한 열 목록은 Azure Databricks 행 추적을 참조하세요.

반드시 responseFormat 옵션을 delta로 설정해야 합니다.

spark.read.format("deltaSharing")
  .option("responseFormat", "delta")
  .load("<profile-path>#<share-name>.<schema-name>.<table-name>")
  .select("_metadata.row_id")
  .show()

메모

Spark 클라이언트에서 행 추적 열을 쿼리하는 데는 델타 응답 형식만 지원됩니다. 덤프 커넥터는 지원되지 않습니다.

Pandas: 공유 데이터 읽기

0.25.3 이상의 공유 데이터에 pandas 액세스하려면 다음 단계를 수행합니다.

이러한 지침에서는 데이터 공급자가 공유한 자격 증명 파일에 액세스할 수 있다고 가정합니다. Databricks-to-Open 공유 모델에서 액세스 가져오기를 참조하세요.

메모

Unity 카탈로그에 대해 사용하도록 설정된 Azure Databricks 작업 영역에서 pandas 사용하고 가져오기 공급자 UI를 사용하여 공급자를 가져오고 공유하는 경우 이 섹션의 지침이 적용되지 않습니다. Unity Catalog에 등록된 다른 테이블과 마찬가지로 공유 테이블에 액세스할 수 있습니다. delta-sharing Python 커넥터를 설치하거나 자격 증명 파일의 경로를 제공할 필요가 없습니다. 공급자 가져오기 및 Azure Databricks에서 공유 데이터 읽기를 참조하세요.

OpenSharing Python 커넥터 설치

데이터를 공유할 때 관련된 메타데이터를 액세스하려면, 예를 들어 귀하와 공유된 테이블 목록과 같은 정보를 보려면, delta-sharing Python connector를 설치해야 합니다. Python 커넥터 제한 사항에 대한 자세한 내용은 OpenSharing Python 커넥터 제한을 참조하세요.

pip install delta-sharing

pandas를 사용하여 공유 테이블을 나열하세요

공유에 있는 테이블을 나열하려면 다음 명령을 실행하고, <profile-path>/config.share을 자격 증명 파일의 위치로 바꾸십시오.

import delta_sharing

client = delta_sharing.SharingClient(f"<profile-path>/config.share")

client.list_all_tables()

출력이 비어 있거나 예상한 테이블이 없는 경우 데이터 공급자에게 문의하세요.

를 사용하여 공유 데이터에 액세스 pandas

Python 사용하여 pandas 공유 데이터에 액세스하려면 다음을 실행하여 다음과 같이 변수를 바꿉니다.

  • <profile-path>: 자격 증명 파일의 위치.
  • <share-name>: 테이블의 share= 값입니다.
  • <schema-name>: 테이블의 schema= 값입니다.
  • <table-name>: 테이블의 name= 값입니다.
import delta_sharing
delta_sharing.load_as_pandas(f"<profile-path>#<share-name>.<schema-name>.<table-name>")

를 사용하여 공유 변경 데이터 피드에 액세스 pandas

Python 사용하여 pandas 공유 테이블에 대한 변경 데이터 피드에 액세스하려면 다음을 실행하고 다음과 같이 변수를 바꿉니다. 데이터 공급자가 테이블의 변경 데이터 피드를 공유했는지 여부에 따라 변경 데이터 피드가 제공되지 않을 수 있습니다.

  • <starting-version>: 선택 사항. 쿼리의 시작 버전, 포함된
  • <ending-version>: 선택 사항. 쿼리의 끝 버전, 포함됨.
  • <starting-timestamp>: 선택 사항. 쿼리의 시작 타임스탬프. 이 항목은 이 타임스탬프보다 크거나 같은 버전으로 변환됩니다.
  • <ending-timestamp>: 선택 사항. 쿼리의 종료 타임스탬프. 이 시간표 이전이나 같은 시간에 생성된 버전으로 변환됩니다.
import delta_sharing
delta_sharing.load_table_changes_as_pandas(
  f"<profile-path>#<share-name>.<schema-name>.<table-name>",
  starting_version=<starting-version>,
  ending_version=<ending-version>)

delta_sharing.load_table_changes_as_pandas(
  f"<profile-path>#<share-name>.<schema-name>.<table-name>",
  starting_timestamp=<starting-timestamp>,
  ending_timestamp=<ending-timestamp>)

출력이 비어 있거나 예상한 데이터가 없는 경우 데이터 공급자에게 문의하세요.

Power BI: 공유 데이터 읽기

Power BI OpenSharing 커넥터를 사용하면 OpenSharing 개방형 프로토콜을 통해 공유된 데이터 세트를 검색, 분석 및 시각화할 수 있습니다.

요구 사항

Databricks에 연결

OpenSharing 커넥터를 사용하여 Azure Databricks 연결하려면 다음을 수행합니다.

  1. 공유된 자격 증명 파일을 텍스트 편집기로 열어 엔드포인트 URL과 토큰을 검색하십시오.
  2. Power BI Desktop를 열어보세요.
  3. 데이터 가져오기 메뉴에서 OpenSharing을 검색합니다.
  4. 연결기를 선택하고 Connect를 클릭하세요.
  5. 자격 증명 파일에서 복사한 엔드포인트 URL을 OpenSharing 서버 URL 필드에 입력합니다.
  6. 고급 옵션 탭에서 선택적으로 행 제한을 설정하여 다운로드할 수 있는 최대 행 수를 지정하십시오. 이 값은 기본적으로 100만 행으로 설정됩니다.
  7. OK를 클릭합니다.
  8. 인증을 위해 자격 증명 파일에서 검색한 토큰을 Bearer Token에 복사하십시오.
  9. 연결을 클릭합니다.

Power BI OpenSharing 커넥터의 제한 사항

Power BI OpenSharing Connector에는 다음과 같은 제한 사항이 있습니다.

  • 커넥터가 불러오는 데이터는 사용자의 기계 메모리에 맞아야 합니다. 이 요구 사항을 관리하기 위해 커넥터는 가져온 행 수를 Power BI Desktop의 고급 옵션 탭에서 설정한 Row Limit로 제한합니다.

Tableau: 공유 데이터 읽기

Tableau OpenSharing 커넥터를 사용하면 OpenSharing 개방형 프로토콜을 통해 사용자와 공유되는 데이터 세트를 검색, 분석 및 시각화할 수 있습니다.

요구 사항

Azure Databricks에 연결

OpenSharing 커넥터를 사용하여 Azure Databricks 연결하려면 다음을 수행합니다.

  1. Tableau Exchange 이동하여 지침에 따라 OpenSharing Connector를 다운로드하고 적절한 데스크톱 폴더에 배치합니다.
  2. Tableau Desktop을 열기.
  3. 커넥터 페이지에서 “OpenSharing by Databricks”를 검색하세요.
  4. 업로드 공유 파일을 선택하고 제공자가 공유한 인증서 파일을 선택하세요.
  5. 데이터 가져오기를 클릭합니다.
  6. 데이터 탐색기에서 테이블을 선택하세요.
  7. 선택적으로 SQL 필터 또는 행 제한을 추가하십시오.
  8. "표 데이터 가져오기"를 클릭하세요.

제한 사항

Tableau OpenSharing 커넥터에는 다음과 같은 제한 사항이 있습니다.

  • 커넥터가 불러오는 데이터는 사용자의 기계 메모리에 맞아야 합니다. 이 요구 사항을 관리하기 위해 커넥터는 가져온 행 수를 Tableau에서 설정한 행 제한으로 제한합니다.
  • 모든 열은 유형 String으로 반환됩니다.
  • SQL 필터는 OpenSharing 서버가 predicateHint를 지원하는 경우에만 작동합니다.
  • 삭제 벡터는 지원되지 않습니다.
  • 열 매핑은 지원되지 않습니다.

OpenSharing Python 커넥터 제한 사항

이러한 제한 사항은 OpenSharing Python 커넥터와 관련이 있습니다.

  • OpenSharing Python 커넥터 1.1.0 이상은 열 매핑이 있는 테이블에서 스냅샷 쿼리를 지원하지만 열 매핑이 있는 테이블의 CDF 쿼리는 지원되지 않습니다.
  • OpenSharing Python 커넥터는 쿼리된 버전 범위 동안 스키마가 변경되면 use_delta_format=True가 포함된 CDF 쿼리를 실패시킵니다.

스트리밍 테이블 제한 사항

공유 스트리밍 테이블의 현재 스냅샷만 읽을 수 있습니다. Databricks-to-Open 공유의 스트리밍 테이블에는 다음 기능이 지원되지 않습니다.

  • 테이블의 기록 데이터 쿼리
  • 테이블의 CDF(변경 데이터 피드) 쿼리
  • 테이블을 Spark 구조적 스트리밍의 원본으로 사용

구체화된 뷰 제한 사항

공유 구체화된 뷰의 현재 스냅샷만 읽을 수 있습니다. 구체화된 뷰를 Spark 구조적 스트리밍의 원본으로 사용하는 것은 Databricks-to-Open 공유에서 지원되지 않습니다.

새 자격 증명 요청

자격 증명 활성화 URL 또는 다운로드한 자격 증명이 손실, 손상 또는 손상되었거나 공급자가 새 자격 증명을 보내지 않고 만료되는 경우 공급자에게 문의하여 새 자격 증명을 요청합니다.

Unity 카탈로그에서 자격 증명을 공급자 개체로 가져온 Azure Databricks 받는 사람인 경우 Databricks REST API를 사용하여 새 자격 증명을 적용합니다. 열린 수신자를 위한 자격 증명 갱신을 참조하세요.