다음을 통해 공유


Apache Iceberg 클라이언트에서 Databricks 테이블 읽기(레거시)

중요합니다

이 콘텐츠에 언급된 제품, 서비스 또는 기술은 유지 관리 모드이며 이 설명서는 사용 중지되었습니다. Apache Iceberg 클라이언트에서 Azure Databricks 테이블에 액세스하는 방법을 참조하세요.

Apache Iceberg REST 카탈로그를 사용하여 Apache Spark, Apache Flink, Trino 및 Snowflake를 비롯한 지원되는 Iceberg 클라이언트에서 Azure Databricks의 Unity 카탈로그 등록 테이블을 읽습니다.

지원되는 통합의 전체 목록은 Unity 카탈로그 통합을 참조하세요.

Unity 카탈로그 Iceberg 카탈로그 엔드포인트를 사용하여 데이터를 읽기

Unity 카탈로그는 Iceberg 읽기를 사용하도록 설정된 테이블에 대한 Iceberg REST 카탈로그 API의 읽기 전용 구현을 제공합니다.

엔드포인트 /api/2.1/unity-catalog/iceberg사용하여 액세스를 구성합니다. 이 REST API 사용에 대한 자세한 내용은 Iceberg REST API 사양을 참조하세요.

비고

Azure Databricks는 일부 Iceberg 판독기 클라이언트에 대한 자격 증명 자동 판매기를 도입했습니다. Databricks는 자격 증명 자동 판매기를 사용하여 지원되는 시스템의 클라우드 스토리지 위치에 대한 액세스를 제어하는 것이 좋습니다. 외부 시스템 액세스을 위한 Unity 카탈로그 자격 증명 발급을 참조하세요.

클라이언트에 대해 자격 증명 공급이 지원되지 않는 경우, Iceberg 읽기(UniForm)이 활성화된 Delta 테이블의 파일 및 메타데이터가 포함된 클라우드 스토리지 위치에 대한 액세스를 구성해야 합니다. 구성 세부 정보는 Iceberg 판독기 클라이언트에 대한 설명서를 참조하세요.

중요합니다

엔드포인트에는 /api/2.1/unity-catalog/iceberg 초당 5 쿼리(QPS) 속도 제한이 있습니다. QPS를 높이려면 엔드포인트를 /api/2.1/unity-catalog/iceberg-rest 사용해야 합니다. Apache Iceberg 클라이언트에서 Azure Databricks 테이블에 액세스하는 방법을 참조하세요.

요구 사항

Azure Databricks는 Unity 카탈로그의 일부로 테이블에 대한 Iceberg REST 카탈로그 액세스를 지원합니다. 이러한 엔드포인트를 사용하려면 작업 영역에서 Unity 카탈로그를 사용하도록 설정해야 합니다. 다음 테이블 형식은 Iceberg REST 카탈로그 읽기에 적합합니다.

  • Iceberg 읽기(UniForm)이 활성화된 Unity 카탈로그 관리 테이블입니다.
  • Iceberg 읽기(UniForm)가 활성화된 상태로 Delta Lake에 저장된 Unity 카탈로그의 외부 테이블입니다.

Iceberg 클라이언트를 사용하여 델타 테이블 읽기를참조하세요.

Iceberg REST 카탈로그를 사용하여 Iceberg 클라이언트에서 Databricks 테이블을 읽도록 액세스를 구성하려면 다음 구성 단계를 완료해야 합니다.

Apache Spark를 사용하여 Iceberg 테이블 읽기

다음은 Azure Databricks 테이블을 Iceberg로 읽도록 Apache Spark를 구성하는 설정의 예입니다.

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

# Configuration for accessing Uniform tables in Unity Catalog
"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": "<workspace-url>/api/2.1/unity-catalog/iceberg",
"spark.sql.catalog.<spark-catalog-name>.token":"<token>",
"spark.sql.catalog.<spark-catalog-name>.warehouse":"<uc-catalog-name>"

다음 변수를 대체합니다.

  • <uc-catalog-name>: 테이블을 포함하는 Unity 카탈로그의 이름입니다.
  • <spark-catalog-name>: Spark 세션에서 카탈로그를 할당하려는 이름입니다.
  • <workspace-url>: Azure Databricks 작업 영역의 URL입니다.
  • <token>: 통합을 구성하는 주체에 대한 PAT 토큰입니다.

이러한 구성을 사용하면 식별자 <catalog-name>.<schema-name>.<table-name>사용하여 Apache Spark에서 Azure Databricks 테이블을 Iceberg로 쿼리할 수 있습니다. 여러 카탈로그의 테이블에 액세스하려면 각 카탈로그를 별도로 구성해야 합니다.

Spark 구성을 사용하여 Unity 카탈로그의 테이블을 쿼리하는 경우 다음 사항에 유의하세요.

  • "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"실행하는 경우에만 이 필요합니다.

  • Azure Databricks는 모든 테이블에 클라우드 개체 스토리지를 사용합니다. 클라우드별 Iceberg 번들 JAR을 Spark 패키지로 추가해야 합니다.

    • AWS: org.apache.iceberg:iceberg-aws-bundle:<iceberg-version>
    • 하늘빛: org.apache.iceberg:iceberg-azure-bundle:<iceberg-version>
    • GCP: org.apache.iceberg:iceberg-gcp-bundle:<iceberg-version>

    자세한 내용은 SparkIceberg AWS 통합에 대한 설명서 참조하세요.

Snowflake를 사용하여 Databricks 테이블 읽기

다음은 Snowflake가 Azure Databricks 테이블을 Iceberg로 읽을 수 있도록 하는 권장 구성 설정의 예입니다.

CREATE OR REPLACE CATALOG INTEGRATION <catalog-integration-name>
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = '<uc-schema-name>'
  REST_CONFIG = (
    CATALOG_URI = '<workspace-url>/api/2.1/unity-catalog/iceberg',
    WAREHOUSE = '<uc-catalog-name>'
  )
  REST_AUTHENTICATION = (
    TYPE = BEARER
    BEARER_TOKEN = '<token>'
  )
  ENABLED = TRUE;

다음 변수를 바꿉니다.

  • <catalog-integration-name>: Snowflake에 등록된 카탈로그를 할당하려는 이름입니다.
  • <uc-schema-name>: 액세스해야 하는 Unity 카탈로그의 스키마 이름입니다.
  • <uc-catalog-name>: 액세스해야 하는 Unity 카탈로그의 카탈로그 이름입니다.
  • <workspace-url>: Azure Databricks 작업 영역의 URL입니다.
  • <token>: 통합을 구성하는 주체에 대한 PAT 토큰입니다.

REST API curl 예제

curl 예제와 같은 REST API 호출을 사용하여 테이블을 로드할 수도 있습니다.

curl -X GET -H "Authorization: Bearer $OAUTH_TOKEN" -H "Accept: application/json" \
https://<workspace-instance>/api/2.1/unity-catalog/iceberg/v1/catalogs/<uc_catalog_name>/namespaces/<uc_schema_name>/tables/<uc_table_name>

그런 다음 다음과 같은 응답을 받아야 합니다.

{
  "metadata-location": "abfss://my-container@my-storage-account.dfs.core.windows.net/path/to/iceberg/table/metadata/file",
  "metadata": <iceberg-table-metadata-json>,
  "config": {
    "expires-at-ms": "<epoch-ts-in-millis>",
    "adls.sas-token.<storage-account-name>.dfs.core.windows.net": "<temporary-sas-token>"
  }
}

비고

응답의 expires-at-ms 필드는 자격 증명의 만료 시간을 나타내며 기본 만료 시간은 1시간입니다. 성능을 향상시키려면 클라이언트가 새 자격 증명을 요청하기 전에 만료 시간까지 자격 증명을 캐시합니다.