Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Apache Iceberg REST kataloğu Apache Spark, Apache Flink ve Trino gibi desteklenen istemcilerin Azure Databricks'te Unity Kataloğu'na kayıtlı Iceberg tablolarından okumasına ve bu tablolara yazmasına olanak tanır.
Desteklenen tümleştirmelerin tam listesi için bkz. Unity Kataloğu tümleştirmeleri.
Not
Unity Kataloğu'nun salt okunur bir Iceberg REST Kataloğu API'si uç noktası da vardır. Bu eski bir uç noktadır. Bkz. Apache Iceberg istemcilerinden Databricks tablolarını okuma (eski).
Unity Kataloğu Iceberg katalog uç noktasını kullanma
Unity Kataloğu, Iceberg REST kataloğu API belirtiminin bir uygulamasını sağlar.
uç nokta /api/2.1/unity-catalog/iceberg-restkullanarak erişimi yapılandırın. Bu REST API'yi kullanma hakkında ayrıntılı bilgi için bkz. Iceberg REST API belirtimi.
Not
Azure Databricks, bazı Iceberg okuyucu müşterileri için kimlik bilgisi verme özelliğini tanıttı. Databricks, desteklenen sistemler için bulut depolama konumlarına erişimi kontrol etmek için kimlik bilgisi yönetiminin kullanılmasını önerir. Bkz. Dış sistem erişimi için Unity Catalog kimlik bilgisi sağlama ve dış sistemleri kullanarak Iceberg tablolarına erişme.
Kimlik bilgisi sağlama istemciniz için desteklenmiyorsa, delta veya Iceberg tablosu için dosyaları ve meta verileri içeren depolama konumuna istemciden erişimi yapılandırmanız gerekir. Yapılandırma ayrıntıları için Iceberg istemcinizin belgelerine bakın.
Gereksinimler
Azure Databricks, Unity Kataloğu'nun bir parçası olarak Iceberg REST kataloğunun tablolara erişimini destekler. Bu uç noktaları kullanmak için çalışma alanınızda Unity Kataloğu'nu etkinleştirmiş olmanız gerekir. Aşağıdaki tablo türlerine Iceberg REST Kataloğu kullanılarak erişilebilir:
| Konu | Okumak | Yazmak |
|---|---|---|
| Yönetilen Buzdağı | Evet | Evet |
| Yabancı Buzdağı | Evet | Hayı |
| Yönetilen Delta (Iceberg okuma özelliği etkinleştirildiğinde) | Evet | Hayı |
| Dış Delta (Iceberg okumaları etkin olduğunda) | Evet | Hayı |
Yabancı Iceberg tabloları, Iceberg REST Katalog API'si kullanılarak tabloları okurken otomatik olarak yenilenmez. Yenilemek için en son anlık görüntüyü okumak için komutunu çalıştırmanız REFRESH FOREIGN TABLE gerekir. Yabancı Iceberg tablolarında kimlik bilgisi dağıtımı desteklenmiyor.
Not
Delta tablolarını Iceberg REST Katalog API'sini kullanarak erişilebilir olacak şekilde yapılandırmanız gerekir. Bkz. Iceberg istemcileri ile Delta tablolarını okuma.
Iceberg REST kataloğunu kullanarak Iceberg istemcilerinden Azure Databricks tablolarından okuma veya yazma erişimini yapılandırmak için aşağıdaki yapılandırma adımlarını tamamlamanız gerekir:
- Meta veri deponuz için Dış veri erişimi etkinleştirin. Bkz. Meta veri deposunda dış veri erişimini etkinleştirme.
- Tümleştirmeyi yapılandıran sorumluya tabloları içeren şemada
EXTERNAL USE SCHEMAayrıcalığı verin. Bkz. Bir özneye Unity Catalog ayrıcalıkları verme. - Azure Databricks kişisel erişim belirteci veya OAuth kullanarak kimlik doğrulayın. Bkz. Azure Databricks kaynaklarına erişimi yetkilendirme.
Not
Iceberg belirtimi tek bir tablo anlık görüntüsünde yinelenen veri dosyalarına izin vermez. Bunu önlemek için, Unity Kataloğu algılandığında dış altyapıların tabloya yinelenen veri dosyaları işlemesini engeller.
Apache Spark ile Iceberg tablolarını kullanma
Aşağıda, Apache Spark'ın OAuth kimlik doğrulamasını kullanarak Iceberg REST Katalog API'sini kullanarak Azure Databricks tablolarına erişecek şekilde nasıl yapılandırılmaya yönelik bir örnek verilmiştir:
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
# Configuration for accessing 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>.rest.auth.type": "oauth2",
"spark.sql.catalog.<spark-catalog-name>.uri": "<workspace-url>/api/2.1/unity-catalog/iceberg-rest",
"spark.sql.catalog.<spark-catalog-name>.oauth2-server-uri": "<workspace-url>/oidc/v1/token",
"spark.sql.catalog.<spark-catalog-name>.credential":"<oauth_client_id>:<oauth_client_secret>",
"spark.sql.catalog.<spark-catalog-name>.warehouse":"<uc-catalog-name>"
"spark.sql.catalog.<spark-catalog-name>.scope":"all-apis"
Aşağıdaki değişkenleri değiştirin:
-
<uc-catalog-name>: Unity Kataloğu'nda tablolarınızı içeren kataloğun adı. -
<spark-catalog-name>: Spark oturumunuzda kataloğu atamak istediğiniz ad. -
<oauth_client_id>: Kimlik doğrulama sorumlusu için OAuth istemci kimliği. -
<oauth_client_secret>: Kimlik doğrulayıcı için OAuth istemci gizli anahtarı.
-
<workspace-url>: Azure Databricks çalışma alanı URL'si. Örneğin,adb-1234567890123456.12.azuredatabricks.net.
Bu yapılandırmalarla, Apache Spark kullanarak Unity Kataloğu'ndaki tabloları sorgulayabilirsiniz. Birden çok katalogda tablolara erişmek için her kataloğu ayrı ayrı yapılandırmanız gerekir.
Spark yapılandırmalarını kullanarak Unity Kataloğu'nda tabloları sorgularken aşağıdakileri göz önünde bulundurun:
"
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"yalnızca Iceberg'e özgü saklı yordamlarıçalıştırıyorsanız gereklidir."Azure Databricks, tüm tablolar için bulut nesne depolama kullanır. Iceberg-spark-runtime JAR dosyasını Spark paketleri olarak eklemeniz gerekir:
- AWS:
org.apache.iceberg:iceberg-aws-bundle:<iceberg-version> - Gök mavisi:
org.apache.iceberg:iceberg-azure-bundle:<iceberg-version> - GCP:
org.apache.iceberg:iceberg-gcp-bundle:<iceberg-version>
Ayrıntılar için Iceberg AWS tümleştirmesi belgelerine , Spark'e bakın.
Not
Azure Databricks'ten Iceberg tablolarına erişirken bu yapılandırmalar gerekli değildir. Dış Iceberg JAR'lerinin Azure Databricks kümelerine yüklenmesi desteklenmez.
- AWS:
Snowflake ile Azure Databricks tablolarına erişme
Snowflake, Iceberg REST kataloğu aracılığıyla tablolara erişmek için iki seçenek sunar: Snowflake'in katalog bağlantılı veritabanlarını veya dış tabloları kullanma.
Her iki seçenek için önce bir Snowflake kataloğu tümleştirmesi yapılandırın. Azure Databricks, Snowflake kataloğu tümleştirmeleri için aşağıdaki kimlik doğrulama yöntemlerini destekler:
- Bearer Token: Azure Databricks kişisel erişim belirteci (PAT) veya OAuth belirteci kullanır. Tüm bulutlarda desteklenir.
- Entra hizmet sorumlusu OAuth (yalnızca Azure):Doğrudan Entra belirteci uç noktasında kimlik doğrulaması yapmak için Microsoft Entra ID hizmet sorumlusunu kullanır.
REST kataloğu tümleştirmeleri için Snowflake kimlik doğrulama seçenekleri hakkında daha fazla bilgi için Snowflake belgelerine bakın.
Snowflake ile bearer token (taşıyıcı belirteç) kimlik doğrulaması
Aşağıdaki örnekte taşıyıcı belirteci kullanarak Snowflake kataloğu tümleştirmesi yapılandırılır. Azure Databricks kişisel erişim belirteci (PAT) veya Azure Databricks hizmet sorumlusundan oluşturulan bir OAuth belirteci kullanabilirsiniz. OAuth belirteçleri oluşturma hakkında ayrıntılı bilgi için bkz. OAuth ile Azure Databricks'e hizmet sorumlusu erişimi yetkilendirme.
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-rest',
WAREHOUSE = '<uc-catalog-name>'
)
REST_AUTHENTICATION = (
TYPE = BEARER
BEARER_TOKEN = '<token>'
)
ENABLED = TRUE;
Aşağıdaki değişkenleri değiştirin:
-
<catalog-integration-name>: Snowflake'e kayıtlı kataloğu atamak istediğiniz ad. -
<uc-schema-name>: Unity Kataloğu'nda erişmeniz gereken şemanın adı. -
<uc-catalog-name>: Unity Kataloğu'nda erişmeniz gereken kataloğun adı. -
<workspace-url>: Azure Databricks çalışma alanı URL'si. Örneğin,https://cust-success.cloud.databricks.comveyahttps://adb-1234567890123456.12.azuredatabricks.net. -
<token>: Tümleştirmeyi yapılandıran sorumlu için kişisel erişim belirteci (PAT).
Entra hizmet sorumlusu OAuth ile Snowflake
Azure'da, Entra destekli hizmet sorumlusu kullanan Snowflake kataloğu tümleştirmeleri Azure Databricks OIDC belirteç uç noktasını (<workspace-url>/oidc/v1/token ) kullanamaz. Bunun yerine, doğrudan Microsoft Entra belirteci uç noktasında kimlik doğrulaması yapmanız gerekir. Bu, Azure'da diğer Iceberg istemcileri (Apache Spark gibi) için kullanılan OAuth yaklaşımından farklıdır.
Not
Snowflake'in belgeleri, Entra Kimliğinin desteklenmediğini gösterebilir. Azure Databricks kaynak kapsamını hedef alan Entra OAuth'un kullanıldığı aşağıdaki yapılandırma, Azure üzerinde Snowflake'ten Unity Kataloğu'nu okumak için desteklenen yoldur.
Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:
- Unity Kataloğu'ndaki hedef şemada
EXTERNAL USE SCHEMAayrıcalığı verilmiş bir Entra hizmet ilkesi. Bkz. Bir özneye Unity Catalog ayrıcalıkları verme. - Hizmet sorumlusunun istemci kimliği ve istemci gizli dizisi.
- Azure kiracı kimliğiniz.
Snowflake'de aşağıdaki SQL'i çalıştırın:
CREATE OR REPLACE CATALOG INTEGRATION <catalog-integration-name>
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = '<uc-schema-name>'
REST_CONFIG = (
CATALOG_URI = 'https://<workspace-url>/api/2.1/unity-catalog/iceberg-rest'
WAREHOUSE = '<uc-catalog-name>'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_TOKEN_URI = 'https://login.microsoftonline.com/<azure-tenant-id>/oauth2/v2.0/token'
OAUTH_CLIENT_ID = '<entra-client-id>'
OAUTH_CLIENT_SECRET = '<entra-client-secret>'
OAUTH_ALLOWED_SCOPES = ('2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default')
)
ENABLED = TRUE
REFRESH_INTERVAL_SECONDS = 600;
Aşağıdaki değişkenleri değiştirin:
-
<catalog-integration-name>: Snowflake'e kayıtlı kataloğu atamak istediğiniz ad. -
<uc-schema-name>: Erişmeniz gereken Unity Kataloğu'ndaki şemanın adı. -
<uc-catalog-name>: Erişmeniz gereken Unity Kataloğu'ndaki kataloğun adı. -
<workspace-url>: Azure Databricks çalışma alanı URL'si. Örneğin,adb-1234567890123456.12.azuredatabricks.net. -
<azure-tenant-id>: Microsoft Entra Tenant ID'niz. -
<entra-client-id>: Entra hizmet sorumlusunun uygulama (istemci) kimliği. -
<entra-client-secret>: Entra hizmet sorumlusu için bir istemci sırrı.
Önemli
Kapsam 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default , Entra'da kayıtlı Azure Databricks uygulama kimliğidir. Bu, Azure Databricks OIDC uç noktasıyla kullanılan kapsamdan farklıdır all-apis . Yanlış kapsamın kullanılması, bu tümleştirmeyi yapılandırırken karşılaşılan kimlik doğrulama hatalarının yaygın bir nedenidir.
Katalog tümleştirmesini oluşturduktan sonra, tablolarınıza erişmek üzere katalog bağlantılı veritabanı oluşturmak için Snowflake belgelerini izleyin.
Azure Databricks için Entra hizmet sorumlularını oluşturma ve yönetme hakkında daha fazla bilgi için bkz. Microsoft Entra hizmet sorumlularıyla kimlik doğrulaması yapma.
Not
Snowflake, Azure Databricks'e bağlanmak için özel ağ (Azure Özel Bağlantı) kullanan katalog tümleştirmeleri için Entra kimlik doğrulamasını desteklemez. Azure Databricks Iceberg REST katalog uç noktası bağlantısı, Entra hizmet sorumlusuyla kimlik doğrulaması yaparken genel ağ kullanmalıdır.
Katalog bağlantılı veritabanları
Snowflake'in katalog bağlantılı veritabanları, şemaları ve Iceberg tablolarını algılamak için Unity Kataloğu ile otomatik olarak eşitlenir. Bu, el ile meta veri yenileme gereksinimini ortadan kaldırır.
Snowflake katalog tümleştirmesini yapılandırdıktan sonra, tablolarınıza erişmek üzere katalog bağlantılı veritabanı oluşturmak için Snowflake belgelerine bakın .
Önemli
Snowflake'ten salt okunur Azure Databricks tablolarına yazma girişimi hatalara neden olabilir. Desteklenen işlemler için Snowflake belgelerine bakın .
Dış tablolar
Alternatif olarak, Snowflake katalog tümleştirmesi oluşturduktan sonra dış tablolar oluşturabilirsiniz. Bu yaklaşım, güncelleştirmeleri görmek için meta verilerin el ile yenilenmesini gerektirir.
CREATE OR REPLACE ICEBERG TABLE my_table
CATALOG = '<catalog-integration-name>'
CATALOG_TABLE_NAME = '<uc-table-name>';
PyIceberg ile Azure Databricks tablolarını kullanma
Azure Databricks tablolarına erişmek için PyIceberg'i kullanmak için gerekli bağımlılıklarla PyIceberg'i yüklemeniz gerekir. PyIceberg, verileri okuma ve tablo meta verilerini inceleme gibi tablo işlemleri gerektirir pyarrow . PyIceberg'i şu ek özellikleriyle pyarrow yükleyin:
pip install "pyiceberg[pyarrow]"
Not
yüklemezseniz pyarrow, tabloları açıklama veya okuma gibi işlemler başarısız olur. İsteğe bağlı bağımlılıkların tam listesi için PyIceberg belgelerine bakın.
Aşağıda, PyIceberg'in Unity Kataloğu'ndaki Iceberg REST Kataloğu'na bağlanarak Azure Databricks tablolarına erişmesine izin veren yapılandırma ayarlarına bir örnek verilmiştir:
catalog:
unity_catalog:
uri: https://<workspace-url>/api/2.1/unity-catalog/iceberg-rest
warehouse: <uc-catalog-name>
token: <token>
Aşağıdaki değişkenleri değiştirin:
-
<workspace-url>: Azure Databricks çalışma alanı URL'si. Örneğin,adb-1234567890123456.12.azuredatabricks.net.
-
<uc-catalog-name>: Unity Kataloğu'nda erişmeniz gereken kataloğun adı. -
<token>: Tümleştirmeyi yapılandıran sorumlu için kişisel erişim belirteci (PAT).
PyIceberg REST katalog yapılandırması belgelerine bakın.
REST API curl örneği
Aşağıdaki curl örnek REST API kullanarak bir tablo yükler:
curl -X GET -H "Authorization: Bearer $OAUTH_TOKEN" -H "Accept: application/json" \
https://<workspace-instance>/api/2.1/unity-catalog/iceberg-rest/v1/catalogs/<uc_catalog_name>/namespaces/<uc_schema_name>/tables/<uc_table_name>
Yanıt şöyle görünür:
{
"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>"
}
}
Not
Alanı expires-at-ms , kimlik bilgilerinin süresinin ne zaman dolduğunda gösterir. Varsayılan süre sonu bir saattir. Daha iyi performans için, istemcinin kimlik bilgilerini yeni kimlik bilgileri istemeden önce süresi dolana kadar önbelleğe almalarını sağlayın.