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
Bu özellik Genel Önizleme aşamasındadır.
Bu sayfa, dış istemcilerden ve sistemlerden Delta Lake tarafından desteklenen Unity Kataloğu dış tablolarının nasıl oluşturulacağı hakkında bilgi sağlar.
Uyarı
Databricks, sütun tanımlarının Apache Spark ile uyumlu bir biçimde olduğundan emin olmak için dış tablolar oluşturmak için Apache Spark kullanılmasını önerir. API, sütun belirtiminin doğruluğunu doğrulamaz. Belirtim Apache Spark ile uyumlu değilse Databricks Runtime tabloları okuyamayabilir.
Gereksinimler
Meta veri deponuz için Dış veri erişimi etkinleştirin. Bkz. Meta veri deposunda dış veri erişimini etkinleştirme.
Ver, tümleştirmeyi yapılandıran yetkiliye aşağıdaki ayrıcalıkları
-
EXTERNAL USE SCHEMAşemada nesneleri içeren ayrıcalık. -
EXTERNAL USE LOCATIONyolu içeren dış konumda erişim hakkı. Bkz. Birincil Unity Kataloğu ayrıcalıkları verme. - tabloda
CREATE TABLEizni, dış konumdaCREATE EXTERNAL TABLE, üst kataloğundaUSE CATALOG, ve üst şemasındaUSE SCHEMA.
-
Apache Spark, Unity Kataloğu API'sini veya diğer dış istemcileri kullanarak dış tablolar oluşturabilirsiniz.
Apache Spark kullanarak Delta tabloları oluşturma
Aşağıda, Apache Spark'ı Unity Kataloğu dış Delta tabloları oluşturacak şekilde yapılandırmaya yönelik ayarların bir örneği verilmiştir:
"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.catalog.spark_catalog": "io.unitycatalog.spark.UCSingleCatalog",
"spark.hadoop.fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
"spark.sql.catalog.<uc-catalog-name>": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>/api/2.1/unity-catalog",
"spark.sql.catalog.<uc-catalog-name>.token": "<token>",
"spark.sql.defaultCatalog": "<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ı. -
<workspace-url>: Azure Databricks çalışma alanının URL'si. -
<token>: Tümleştirmeyi yapılandıran sorumlu için OAuth belirteci.
Apache Spark ve Delta Lake'in Unity Kataloğu ile birlikte çalışması için en az Apache Spark 3.5.3 ve Delta Lake 3.2.1 gerekir.
Apache Spark başlatılırken aşağıdaki bağımlılıkları ekleyin:
--packages "org.apache.hadoop:hadoop-aws:3.3.4,\
io.delta:delta-spark_2.12:3.2.1,\
io.unitycatalog:unitycatalog-spark_2.12:0.2.0"
Artık SQL kullanarak dış tablolar oluşturabilirsiniz:
CREATE TABLE <uc-catalog-name>.<schema-name>.<table-name> (id INT, desc STRING)
USING delta
LOCATION <path>;
API kullanarak Delta tabloları oluşturma
Unity Kataloğu REST API'sini kullanarak dış Delta tablosu oluşturmak için şu adımları izleyin:
1. Adım: Tablo Oluşturma API'sine POST isteğinde bulunma
Tablo meta verilerini Unity Kataloğu'na kaydetmek için aşağıdaki API isteğini kullanın:
curl --location --request POST 'https://<workspace-url>/api/2.0/unity-catalog/tables/' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "<table-name>",
"catalog_name": "<uc-catalog-name>",
"schema_name": "<schema-name>",
"table_type": "EXTERNAL",
"data_source_format": "DELTA",
"storage_location": "<path>",
"columns": [
{
"name": "id",
"type_name": "LONG",
"type_text": "bigint",
"type_json": "\"long\"",
"type_precision": 0,
"type_scale": 0,
"position": 0,
"nullable": true
},
{
"name": "name",
"type_name": "STRING",
"type_text": "string",
"type_json": "\"string\"",
"type_precision": 0,
"type_scale": 0,
"position": 1,
"nullable": true
}
]
}'
Aşağıdaki değişkenleri değiştirin:
-
<workspace-url>: Azure Databricks çalışma alanının URL'si -
<token>: API çağrısı yapan sorumlunun belirteci -
<uc-catalog-name>: Unity Kataloğu'nda dış tabloyu içerecek kataloğun adı -
<schema-name>: Tablonun oluşturulacağı katalog içindeki şemanın adı -
<table-name>: Dış tablonun adı -
<path>: Tablo verilerinin tam yolu
2. Adım: Delta tablosu konumunu başlatma
Yukarıdaki API çağrısı tabloyu :[UC] konumuna kaydeder, ancak Delta dosyalarını depolama konumunda oluşturmaz. Tablo konumunu başlatmak için Spark kullanarak boş bir Delta tablosu yazın:
Bu adımda kullanılan şema, API isteğinde sağlanan sütun tanımlarıyla tam olarak eşleşmelidir.
from pyspark.sql.types import StructType, StructField, StringType, LongType
# Define schema matching your API call
schema = StructType([
StructField("id", LongType(), True),
StructField("name", StringType(), True)
])
# Create an empty DataFrame and initialize the Delta table
empty_df = spark.createDataFrame([], schema)
empty_df.write \
.format("delta") \
.mode("overwrite") \
.save("<path>")
Uyarı
Dış istemciler için Tablo Oluşturma API'sinde aşağıdaki sınırlamalar vardır:
- Yalnızca dış Delta tabloları desteklenir (
"table_type": "EXTERNAL"ve"data_source_format": "DELTA"). - Yalnızca aşağıdaki alanlara izin verilir:
namecatalog_nameschema_nametable_typedata_source_formatcolumnsstorage_locationproperties
- Sütun maskeleri desteklenmez.