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.
Önemli
Unity Kataloğu Apache Iceberg REST Katalog API'si, Databricks Runtime 16.4 LTS ve üzerinde Genel Önizleme aşamasındadır. Bu uç nokta Iceberg istemcilerinden gelen tabloları okumak ve tablolara yazmak için önerilir.
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).
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.
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 Kataloğu kimlik bilgileri dağıtımı.
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 aracılığıyla 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" okuması etkinleştirildiğinde) | Evet | Hayı |
Iceberg REST Katalog API'sini okurken harici Iceberg tabloları otomatik olarak güncellenmez. 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ına Iceberg REST Katalog API'sini kullanarak erişilebilecek şekilde yapılandırmanız gerekir. Bkz. Iceberg istemcileri ile Delta tablolarını okuma.
Iceberg REST kataloğunu kullanarak Iceberg istemcilerinden Azure Databricks tablolarını 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. Birincil Unity Kataloğu 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.
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. -
<workspace-url>: Azure Databricks çalışma alanı URL'si. -
<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ı.
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
Aşağıda, Unity Kataloğu'nda Iceberg REST Kataloğu'na bağlanarak Snowflake'in Azure Databricks tablolarına erişmesine yönelik yapılandırma ayarlarına bir örnek verilmiştir:
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>: 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. -
<token>: Tümleştirmeyi yapılandıran sorumlu için PAT belirteci.
PyIceberg ile Azure Databricks tablolarını kullanma
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. -
<uc-catalog-name>: Erişmeniz gereken Unity Kataloğu'ndaki kataloğun adı. -
<token>: Tümleştirmeyi yapılandıran sorumlu için PAT belirteci.
PyIceberg REST katalog yapılandırması belgelerine bakın.
REST API curl örneği
Tablo yüklemek için bu curl örnekteki gibi bir REST API çağrısı da kullanabilirsiniz:
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>
Ardından aşağıdaki gibi bir yanıt almanız gerekir:
{
"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
Yanıttaki expires-at-ms alanı, kimlik bilgilerinin sona erme süresini belirtir ve varsayılan süre sonu süresi bir saattir. Daha iyi performans için, istemcinin yeni bir kimlik bilgisi istemeden önce kimlik bilgilerini son kullanma tarihine kadar önbelleğe almalarını sağlayın.