Iceberg istemcilerinden Databricks tablolarını okuma
Apache Spark, Apache Flink, Trino ve Snowflake gibi desteklenen Iceberg istemcilerinden Azure Databricks'te Unity Kataloğu'na kayıtlı tabloları okumak için Iceberg REST kataloğunu kullanın.
Unity Catalog Iceberg kataloğu uç noktasını kullanarak okuma
Unity Kataloğu, Iceberg okumaları etkinleştirilmiş tablolar için Iceberg REST katalog API'sinin salt okunur bir uygulamasını sağlar.
uç nokta /api/2.1/unity-catalog/iceberg
kullanarak 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 denetlemek için kimlik bilgisi otomatlarının kullanılmasını önerir. Bkz. dış sistem erişimi için Unity Kataloğu kimlik bilgileri.
İstemciniz için kimlik bilgisi otomatları desteklenmiyorsa, Iceberg okumaları (UniForm) için etkinleştirilmiş delta tablosunun dosyalarını ve meta verilerini içeren bulut depolama konumuna, istemciden erişimi yapılandırmanız gerekir. Yapılandırma ayrıntıları için Iceberg okuyucu 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ürleri Iceberg REST katalog okumaları için uygundur:
- Iceberg okumaları (UniForm) etkinleştirilmiş Unity Kataloğu tarafından yönetilen tablolar.
- Iceberg okumaları (UniForm) etkinleştirilmiş Delta Lake ile depolanan Unity Kataloğu harici tabloları.
Bkz. Iceberg istemcileri ile Delta tablolarını okuma.
Iceberg REST kataloğunu kullanarak Iceberg istemcilerinden Databricks tablolarını okuma 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 SCHEMA
ayrıcalığı verin. Bkz: Bir yöneticiye EXTERNAL USE SCHEMAizni ver. - Databricks kişisel erişim belirtecini kullanarak kimliğinizi doğrulayın. Bkz. Azure Databricks kaynaklarına erişimi yetkilendirme.
Apache Spark ile Iceberg tablolarını okuma
Aşağıda Apache Spark'ı Azure Databricks tablolarını Iceberg olarak okuyacak şekilde yapılandırma ayarlarına bir örnek verilmiştir:
"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>"
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ının URL'si. -
<token>
: Tümleştirmeyi yapılandıran sorumlu için PAT belirteci.
Bu yapılandırmalarla, <catalog-name>.<schema-name>.<table-name>
tanımlayıcısını kullanarak Apache Spark'ta Azure Databricks tablolarını Iceberg olarak 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. Buluta özgü Iceberg paketi JAR'sini Spark paketi olarak eklemeniz gerekir:
- AWS:
org.apache.iceberg:iceberg-aws-bundle:<iceberg-version>
- Azure:
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.
- AWS:
Snowflake ile Databricks tablolarını okuma
Aşağıda Snowflake'in Azure Databricks tablolarını Iceberg olarak okumasına izin vermek için önerilen 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',
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ının URL'si. -
<token>
: Tümleştirmeyi yapılandıran sorumlu için PAT belirteci.
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 "Authentication: 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>
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.