Taşıyıcı belirteçlerle paylaşılan verileri okuma

Bu sayfada, taşıyıcı belirteçleri ile OpenSharing açık paylaşım protokolü kullanılarak sizinle paylaşılan verilerin nasıl okunduğu açıklanmaktadır. Aşağıdaki araçları kullanarak paylaşılan verileri okumaya yönelik yönergeler içerir:

Bu paylaşım modelinde, paylaşılan verilere güvenli okuma erişimi elde etmek için veri sağlayıcısı tarafından ekibinizin bir üyesiyle paylaşılan bir kimlik bilgisi dosyası kullanırsınız. Kimlik bilgisi geçerli olduğu ve sağlayıcının verileri paylaşmaya devam etmesi sürece Erişim devam eder. Sağlayıcılar kimlik bilgisi süre sonunu ve yenilemeyi yönetir. Verilerde yapılan güncelleştirmeler neredeyse gerçek zamanlı olarak kullanılabilir. Paylaşılan verileri okuyabilir ve kopyalayabilirsiniz, ancak kaynak verileri değiştiremezsiniz.

Note

Databricks-Databricks OpenSharing kullanılarak veriler sizinle paylaşıldıysa, verilere erişmek için bir kimlik bilgisi dosyasına ihtiyacınız yoktur ve bu sayfa sizin için geçerli değildir. Bunun yerine bkz. Databricks-to-Databricks OpenSharing (alıcılar için) kullanılarak paylaşılan verileri okuma.

Aşağıdaki bölümlerde, kimlik bilgisi dosyasını kullanarak paylaşılan verilere erişmek ve bunları okumak için Apache Spark, pandas, Power BI ve Iceberg istemcilerinin nasıl kullanılacağı açıklanmaktadır. OpenSharing bağlayıcılarının tam listesi ve bunların nasıl kullanılacağı hakkında bilgi için OpenSharing açık kaynak belgelerine bakın. Paylaşılan verilere erişirken sorunla karşılaşırsanız veri sağlayıcısına başvurun.

başlamadan önce

Ekibinizin bir üyesi, veri sağlayıcısı tarafından paylaşılan kimlik bilgileri dosyasını indirmeli ve bu dosyayı veya dosya konumunu sizinle paylaşmak için güvenli bir kanal kullanmalıdır. Bkz. Databricks-To-Open paylaşım modelinde erişim alma.

Bağlayıcıya özgü belgeler için indirme kimlik bilgileri sayfasına bakın.

Iceberg istemcileri: Paylaşılan verileri okuma

Apache Iceberg REST Katalog API'sini kullanarak sıfır kopya erişimine sahip paylaşılan veri varlıklarını okumak için Snowflake, Trino, Flink ve Spark gibi dış Iceberg istemcilerini kullanın.

Bağlantı kimlik bilgilerini alma

Dış Iceberg istemcileriyle paylaşılan veri varlıklarına erişmeden önce aşağıdaki kimlik bilgilerini toplayın:

  • Iceberg REST Kataloğu uç noktası
  • Geçerli bir Bearer jetonu
  • Paylaşım adı
  • (İsteğe bağlı) Ad alanı veya şema adı
  • (İsteğe bağlı) Tablo adı

Iceberg REST Kataloğu uç noktası (icebergEndpoint) ve Taşıyıcı belirteci, veri sağlayıcınız tarafından sizinle paylaşılan kimlik bilgileri dosyasında bulunur. Daha fazla bilgi için Başlamadan önce bölümüne bakın. Paylaşım adı, ad alanı ve tablo adı OpenSharing API'leri kullanılarak program aracılığıyla bulunabilir.

Important

icebergEndpoint, kimlik bilgisi dosyasında bulunur ve biçimindedir<workspace-url>/api/2.0/delta-sharing/metastores/<metastore-id>/iceberg.

Aşağıdaki örneklerde ek kimlik bilgilerinin nasıl alın aldığı gösterilmektedir. Gerektiğinde kimlik bilgisi dosyasından uç noktayı, Iceberg uç noktasını ve Bearer Token'ı girin.

// List shares
curl -X GET "<endpoint>/shares" \
   -H "Authorization: Bearer <bearerToken>"

// List namespaces
curl -X GET "<icebergEndpoint>/v1/shares/<share>/namespaces" \
   -H "Authorization: Bearer <bearerToken>"

// List tables
curl -X GET "<icebergEndpoint>/v1/shares/<share>/namespaces/<namespace>/tables" \
   -H "Authorization: Bearer <bearerToken>"

Note

Bu yöntem her zaman varlıkların en güncel listesini alır. Ancak, İnternet erişimi gerektirir ve kod içermeyen ortamlarda tümleştirmek daha zor olabilir.

Iceberg kataloğunu yapılandırma

Gerekli bağlantı kimlik bilgilerini aldıktan sonra, istemcinizi tablo oluşturmak ve sorgulamak için Iceberg REST Kataloğu uç noktalarını kullanacak şekilde yapılandırın.

  1. Her paylaşım için bir katalog tümleştirmesi oluşturun.

    USE ROLE ACCOUNTADMIN;
    
    CREATE OR REPLACE CATALOG INTEGRATION <CATALOG_PLACEHOLDER>
    CATALOG_SOURCE = ICEBERG_REST
    TABLE_FORMAT = ICEBERG
    REST_CONFIG = (
       CATALOG_URI = '<icebergEndpoint>',
       WAREHOUSE = '<share_name>',
       ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
    )
    REST_AUTHENTICATION = (
       TYPE = BEARER,
       BEARER_TOKEN = '<bearerToken>'
    )
    ENABLED = TRUE;
    
  2. İsteğe bağlı olarak meta verileri güncel tutmak için ekleyin REFRESH_INTERVAL_SECONDS . Değeri katalog güncelleştirme sıklığınıza göre ayarlayın.

    REFRESH_INTERVAL_SECONDS = 30
    
  3. Katalog yapılandırıldıktan sonra katalogdan bir veritabanı oluşturun. Bu, söz konusu katalogdaki tüm şemaları ve tabloları otomatik olarak oluşturur.

    CREATE DATABASE <DATABASE_PLACEHOLDER>
    LINKED_CATALOG = (
       CATALOG = <CATALOG_PLACEHOLDER>
    );
    
  4. Paylaşımın başarılı olduğunu onaylamak için veritabanındaki bir tablodan sorgu yapın. Paylaşılan verileri Azure Databricks'te görmelisiniz.

Sonuç boşsa veya bir hata oluşursa şu yaygın sorun giderme adımlarını izleyin:

  • Ayrıcalıkları, anlık görüntü oluşturma durumunu ve REST kimlik bilgilerini iki kez denetleyin.
  • Veri sağlayıcınıza başvurun.
  • Iceberg istemcinize özgü belgelere bakın.

Örnek: Farklı Iceberg istemcilerini kullanarak paylaşılan tablolara erişme

Aşağıdaki örneklerde, bağlantı kimlik bilgilerinizi aldıktan sonra Snowflake, Apache Spark, PyIceberg ve REST API gibi dış Iceberg istemcilerini kullanarak openshared tablolarına nasıl erişildiği gösterilmektedir. Bağlantı kimlik bilgilerini alma hakkında daha fazla bilgi için bkz. Başlamadan önce.

Snowflake

Snowflake'teki paylaşılan veri varlıklarını okumak için indirdiğiniz kimlik bilgisi dosyasını karşıya yükleyin ve gerekli SQL komutunu oluşturun:

  1. OpenSharing etkinleştirme bağlantınızda Kar Tanesi simgesine tıklayın.

  2. Snowflake tümleştirme sayfasında, veri sağlayıcısından aldığınız kimlik bilgileri dosyasını karşıya yükleyin.

    Snowflake'te kimlik dosyasını yükleyin

  3. Kimlik bilgilerini yükledikten sonra Snowflake'te erişmek istediğiniz paylaşımı seçin.

  4. İstenen varlıkları seçtikten sonra SQL Oluştur'a tıklayın.

    Snowflake için SQL komutu oluşturma

  5. Oluşturulan SQL'i kopyalayıp Snowflake çalışma sayfanıza yapıştırın. CATALOG_PLACEHOLDER ile kullanmak istediğiniz kataloğun adını ve DATABASE_PLACEHOLDER ile kullanmak istediğiniz veritabanının adını değiştirin.

Sınırlamalar

Snowflake'te Iceberg REST Kataloğu'na bağlanmak için aşağıdaki sınırlamalar vardır:

  • Meta veri dosyası en son anlık görüntüyle otomatik olarak güncelleştirilmez. Otomatik yenilemeye veya el ile yenilemelere güvenmeniz gerekir.
  • R2 desteklenmez.
  • Tüm Iceberg istemci sınırlamaları geçerlidir.

Apache Spark

Apache Spark kullanarak paylaşılan tablolara erişmek için Iceberg REST Katalog API'sini aşağıdaki ayarlarla yapılandırın. Kataloğunuz için bir ad ile <spark-catalog-name> öğesini değiştirin ve bağlantı kimlik bilgilerinizi sağlayın.

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

# Configuration for accessing tables shared using Delta Sharing
"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": "<icebergEndpoint>",
"spark.sql.catalog.<spark-catalog-name>.token": "<bearerToken>",
"spark.sql.catalog.<spark-catalog-name>.warehouse":"<share_name>",
"spark.sql.catalog.<spark-catalog-name>.scope":"all-apis"

PyIceberg

PyIceberg , JVM kullanmadan Iceberg tablolarına erişmeye yönelik bir Python uygulamasıdır. 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]"

Paylaşılan tablolara erişmek için PyIceberg yapılandırma dosyanıza aşağıdaki katalog yapılandırmasını ekleyin:

catalog:
  delta_sharing:
    type: rest
    uri: <icebergEndpoint>
    warehouse: <share_name>
    token: <bearerToken>

REST API

Bir tabloyu yüklemek ve veri dosyalarına erişmek için geçici kimlik bilgileriyle birlikte meta verilerini almak için aşağıdaki curl örnekte olduğu gibi bir REST API çağrısı kullanın:

curl -X GET -H "Authorization: Bearer <bearerToken>" -H "Accept: application/json" \
<icebergEndpoint>/v1/shares/<share_name>/namespaces/<schema_name>/tables/<table_name>

Yanıt iceberg tablosu meta verilerini, S3 konumunu ve istemcinizin veri dosyalarını okumasına olanak sağlayan geçici AWS kimlik bilgilerini içerir:

{
  "metadata-location": "s3://bucket/path/to/iceberg/table/metadata/file",
  "metadata": <iceberg-table-metadata-json>,
  "config": {
    "expires-at-ms": "<epoch-ts-in-millis>",
    "s3.access-key-id": "<temporary-s3-access-key-id>",
    "s3.session-token": "<temporary-s3-session-token>",
    "s3.secret-access-key": "<temporary-secret-access-key>",
    "client.region": "<aws-bucket-region-for-metadata-location>"
  }
}

Iceberg istemci sınırlamaları

Iceberg istemcilerinden OpenSharing verileri sorgulandığında aşağıdaki sınırlamalar geçerlidir:

  • Bir ad alanında tabloları listelerken, ad alanı 100'den fazla paylaşılan görünüm içeriyorsa, yanıt ilk 100 görünümle sınırlıdır.

Apache Spark: Paylaşılan verileri okuma

Spark 3.x veya üzerini kullanarak paylaşılan verilere erişmek için bu adımları izleyin.

Bu yönergelerde, veri sağlayıcısı tarafından paylaşılan kimlik bilgileri dosyasına erişiminiz olduğu varsayılır. Bkz. Databricks-To-Open paylaşım modelinde erişim alma.

Important

Mutlak bir yol kullanarak kimlik bilgileri dosyanıza Apache Spark tarafından erişilebilir olduğundan emin olun. Yol bir bulut nesnesine veya Unity Kataloğu hacmine atıfta bulunabilir.

Note

Spark'ı Unity Kataloğu için etkinleştirilmiş bir Azure Databricks çalışma alanında kullanıyorsanız ve sağlayıcıyı içeri aktarmak ve paylaşmak için içeri aktarma sağlayıcı kullanıcı arabirimini kullandıysanız, bu bölümdeki yönergeler sizin için geçerli değildir. Paylaşılan tablolara, Unity Kataloğu'nda kayıtlı diğer tüm tablolarda olduğu gibi erişebilirsiniz. delta-sharing Python bağlayıcısını yüklemeniz veya kimlik bilgisi dosyasının yolunu sağlamanız gerekmez. Bkz. Azure Databricks'da sağlayıcıyı içeri aktarma ve paylaşılan verileri okuma.

OpenSharing Python ve Spark bağlayıcılarını yükleme

Sizinle paylaşılan tabloların listesi gibi paylaşılan verilerle ilgili meta verilere erişmek için aşağıdakileri yapın. Bu örnekte Python kullanılır.

  1. delta-sharing Python bağlayıcısını yükleyin. Python bağlayıcı sınırlamaları hakkında bilgi için bkz . OpenSharing Python bağlayıcı sınırlamaları.

    pip install delta-sharing
    
  2. Apache Spark bağlayıcısını yükleyin.

Spark kullanarak paylaşılan tabloları listeleme

Paylaşımdaki tabloları listeleyin. Aşağıdaki örnekte, <profile-path> yerine kimlik bilgisi dosyasının konumunu değiştirin.

import delta_sharing

client = delta_sharing.SharingClient(f"<profile-path>/config.share")

client.list_all_tables()

Sonuç, her tablo için meta verilerin yanı sıra bir tablo dizisidir. Aşağıdaki çıkışta iki tablo gösterilmektedir:

Out[10]: [Table(name='example_table', share='example_share_0', schema='default'), Table(name='other_example_table', share='example_share_0', schema='default')]

Çıkış boşsa veya beklediğiniz tabloları içermiyorsa veri sağlayıcısına başvurun.

Spark kullanarak paylaşılan verilere erişme

Aşağıdaki değişkenleri değiştirerek aşağıdakileri çalıştırın:

  • <profile-path>: kimlik bilgisi dosyasının konumu.
  • <share-name>: tablo için share= değeri.
  • <schema-name>: tablo için schema= değeri.
  • <table-name>: tablo için name= değeri.
  • <version-as-of>:opsiyonel. Verileri yüklemek için tablonun sürümü. Yalnızca veri sağlayıcısı tablonun geçmişini paylaşıyorsa çalışır. delta-sharing-spark 0.5.0 veya üzerini gerektirir.
  • <timestamp-as-of>:opsiyonel. Verileri, belirtilen zaman damgasından önceki sürümde veya belirtilen zaman damgasında yükleyin. Yalnızca veri sağlayıcısı tablonun geçmişini paylaşıyorsa çalışır. delta-sharing-spark 0.6.0 veya üzerini gerektirir.

Python

delta_sharing.load_as_spark(f"<profile-path>#<share-name>.<schema-name>.<table-name>", version=<version-as-of>)

spark.read.format("deltaSharing")\
.option("versionAsOf", <version-as-of>)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")\
.limit(10)

delta_sharing.load_as_spark(f"<profile-path>#<share-name>.<schema-name>.<table-name>", timestamp=<timestamp-as-of>)

spark.read.format("deltaSharing")\
.option("timestampAsOf", <timestamp-as-of>)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")\
.limit(10)

Scala

spark.read.format("deltaSharing")
.option("versionAsOf", <version-as-of>)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")
.limit(10)

spark.read.format("deltaSharing")
.option("timestampAsOf", <version-as-of>)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")
.limit(10)

Spark kullanarak paylaşılan değişiklik veri akışına erişme

Tablo geçmişi sizinle paylaşıldıysa ve kaynak tabloda değişiklik veri akışı (CDF) etkinleştirildiyse, aşağıdaki değişkenleri değiştirerek değişiklik veri akışına erişin. delta-sharing-spark 0.5.0 veya üzerini gerektirir.

Bir başlangıç parametresi sağlanmalıdır.

  • <profile-path>: kimlik bilgisi dosyasının konumu.
  • <share-name>: tablo için share= değeri.
  • <schema-name>: tablo için schema= değeri.
  • <table-name>: tablo için name= değeri.
  • <starting-version>:opsiyonel. Sorgunun başlangıç sürümü (dahil). Uzun olarak belirtin.
  • <ending-version>:opsiyonel. Sorgunun bitiş sürümü (dahil). Bitiş sürümü sağlanmazsa, API en son tablo sürümünü kullanır.
  • <starting-timestamp>:opsiyonel. Sorgunun başlangıç zaman damgası, bu zaman damgasına eşit veya daha büyük bir versiyon oluşturacak şekilde dönüştürülür. Bir dizeyi yyyy-mm-dd hh:mm:ss[.fffffffff] biçiminde belirtin.
  • <ending-timestamp>:opsiyonel. Sorgunun bitiş zaman damgası olan bu, bu zaman damgasının daha önce veya buna eşit şekilde oluşturulmuş bir sürümüne dönüştürülür. Biçim yyyy-mm-dd hh:mm:ss[.fffffffff] örneğinde bir dize olarak belirtin.

Python

delta_sharing.load_table_changes_as_spark(f"<profile-path>#<share-name>.<schema-name>.<table-name>",
  starting_version=<starting-version>,
  ending_version=<ending-version>)

delta_sharing.load_table_changes_as_spark(f"<profile-path>#<share-name>.<schema-name>.<table-name>",
  starting_timestamp=<starting-timestamp>,
  ending_timestamp=<ending-timestamp>)

spark.read.format("deltaSharing").option("readChangeFeed", "true")\
.option("startingVersion", <starting-version>)\
.option("endingVersion", <ending-version>)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

spark.read.format("deltaSharing").option("readChangeFeed", "true")\
.option("startingTimestamp", <starting-timestamp>)\
.option("endingTimestamp", <ending-timestamp>)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

Scala

spark.read.format("deltaSharing").option("readChangeFeed", "true")
.option("startingVersion", <starting-version>)
.option("endingVersion", <ending-version>)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

spark.read.format("deltaSharing").option("readChangeFeed", "true")
.option("startingTimestamp", <starting-timestamp>)
.option("endingTimestamp", <ending-timestamp>)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

Çıkış boşsa veya beklediğiniz verileri içermiyorsa veri sağlayıcısına başvurun.

Spark Yapılandırılmış Akış kullanarak paylaşılan tabloya erişmeyi

Tablo geçmişi sizinle paylaşılıyorsa, paylaşılan verileri okuma akışını yapabilirsiniz. delta-sharing-spark 0.6.0 veya üzerini gerektirir.

Desteklenen seçenekler:

  • ignoreDeletes: Verileri silen işlemleri yoksayın.
  • ignoreChanges: UPDATE, MERGE INTO, DELETE (bölümler içinde) veya OVERWRITEgibi bir veri değiştirme işlemi nedeniyle kaynak tabloda dosyalar yeniden yazıldıysa güncelleştirmeleri yeniden işleyin. Değişmemiş satırlar yine de yayılabilir. Bu nedenle, alt tüketicilerinizin tekrarları işleyebilmesi gerekir. Silme işlemleri alt akışa iletilmez. ignoreChanges, ignoreDeletes'i içerir. Bu nedenle, kullanırsanız ignoreChanges, akışınız silmeler veya kaynak tablodaki güncelleştirmeler tarafından kesintiye uğramaz.
  • startingVersion: Başlangıç olarak paylaşılan tablo sürümü. Bu sürümden (dahil) başlayarak tüm tablo değişiklikleri akış kaynağı tarafından okunur.
  • startingTimestamp: Başlangıç için zaman damgası. Zaman damgası (dahil) sırasında veya sonrasında işlenen tüm tablo değişiklikleri akış kaynağı tarafından okunur. Örnek: "2023-01-01 00:00:00.0".
  • maxFilesPerTrigger: Her mikro toplu işlemde dikkate alınması gereken yeni dosyaların sayısı.
  • maxBytesPerTrigger: Her mikro toplu işlemde işlenen veri miktarı. Bu seçenek bir "soft max" ayarlar; başka bir deyişle bir toplu işlem yaklaşık olarak bu miktarda veriyi işler ve en küçük giriş biriminin bu sınırdan büyük olduğu durumlarda akış sorgusunun ileriye doğru ilerlemesini sağlamak için sınırdan daha fazlasını işleyebilecektir.
  • readChangeFeed: Akış, paylaşılan tablonun değişiklik veri akışını okur.

Desteklenen tetikleyiciler:

  • Trigger.ProcessingTime: Açık tetikleyici belirtilmediğinde kullanılan varsayılan tetikleyici. Veriler, sürekli mikro partiler hâlinde işlenir.
  • Trigger.AvailableNow: Sorgu, başlangıçta paylaşılan tablonun sunucu tarafındaki sürümünü yakalar, birikmiş işleri maxFilesPerTrigger ve maxVersionsPerRpc değerlerini gözeten birden çok mikro toplu iş halinde işler ve yakalanan sürüm tükendiğinde sona erer. delta-sharing-spark 1.4.0 veya üzerini gerektirir. Eski sürümler, maxVersionsPerRpc öğesine saygı duymayan bir Trigger.AvailableNow sarmalayıcıya geri döner.
  • Trigger.Once: Kullanım dışı; yerine kullanın Trigger.AvailableNow . delta-sharing-spark 1.4.0'ın altındaki sürümlerle, Trigger.AvailableNow, maxVersionsPerRpc'ye uymayan bir sarmalayıcıya geri döner.

Örnek Yapılandırılmış Akış sorguları

Python
spark.readStream.format("deltaSharing")\
.option("startingVersion", 0)\
.option("ignoreDeletes", true)\
.option("maxBytesPerTrigger", 10000)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")
Scala
spark.readStream.format("deltaSharing")
.option("startingVersion", 0)
.option("ignoreChanges", true)
.option("maxFilesPerTrigger", 10)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

Ayrıca bkz . Yapılandırılmış Akış kavramları.

Silme vektörlerinin veya sütun eşlemenin etkinleştirildiği tabloları okuma

Important

Bu özellik Genel Önizleme aşamasındadır.

Silme vektörleri, sağlayıcınızın paylaşılan Delta tablolarında etkinleştirebileceği bir depolama iyileştirme özelliğidir. Bkz . Databricks'te silme vektörleri.

Azure Databricks Delta tabloları için sütun eşlemeyi de destekler. Delta Lake sütun eşlemesi ile sütunları yeniden adlandırma ve bırakma konusuna bakın.

Sağlayıcınız, silme vektörleri veya sütun eşlemesi etkinleştirilmiş bir tablo paylaştıysa, delta-sharing-spark 3.1 veya üzeri çalışan hesaplamayı kullanarak tabloyu okuyabilirsiniz. Databricks kümeleri kullanıyorsanız, Databricks Runtime 14.1 veya üzerini çalıştıran bir kümeyi kullanarak toplu okuma gerçekleştirebilirsiniz. CDF ve akış sorguları Databricks Runtime 14.2 veya üzerini gerektirir.

Tablo özelliklerine göre responseFormat otomatik olarak çözümleyebildiği için toplu sorguları olduğu gibi gerçekleştirebilirsiniz.

Bir değişiklik veri akışını (CDF) okumak veya silme vektörleri veya sütun eşlemesi etkin olan paylaşılan tablolarda akış sorguları gerçekleştirmek için ek seçeneğini responseFormat=deltaayarlamanız gerekir.

Aşağıdaki örneklerde batch, CDF ve akış sorguları gösterilmektedir:

import org.apache.spark.sql.SparkSession

val spark = SparkSession
        .builder()
        .appName("...")
        .master("...")
        .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension")
        .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
        .getOrCreate()

val tablePath = "<profile-file-path>#<share-name>.<schema-name>.<table-name>"

// Batch query
spark.read.format("deltaSharing").load(tablePath)

// CDF query
spark.read.format("deltaSharing")
  .option("readChangeFeed", "true")
  .option("responseFormat", "delta")
  .option("startingVersion", 1)
  .load(tablePath)

// Streaming query
spark.readStream.format("deltaSharing").option("responseFormat", "delta").load(tablePath)

Paylaşılan tablolarda satır izleme sütunlarını okuma

Veri sağlayıcısı paylaşılan bir tabloda satır izlemeyi etkinleştirdiyse Scala Spark kullanarak satır izleme meta veri sütunlarını sorgulayabilirsiniz. Kullanılabilir sütunların listesi için Azure Databricks'te satır izleme bölümüne bakın.

seçeneğini olarak responseFormatayarlamanız delta gerekir.

spark.read.format("deltaSharing")
  .option("responseFormat", "delta")
  .load("<profile-path>#<share-name>.<schema-name>.<table-name>")
  .select("_metadata.row_id")
  .show()

Note

Spark istemcisinde satır izleme sütunlarını sorgulamak için yalnızca delta yanıt biçimi desteklenir. Boşaltma bağlayıcıları desteklenmez.

Pandas: Paylaşılan verileri okuma

0.25.3 veya üzerinde paylaşılan verilere pandas erişmek için bu adımları izleyin.

Bu yönergelerde, veri sağlayıcısı tarafından paylaşılan kimlik bilgileri dosyasına erişiminiz olduğu varsayılır. Bkz. Databricks-To-Open paylaşım modelinde erişim alma.

Note

Unity Kataloğu için etkinleştirilmiş bir Azure Databricks çalışma alanında pandas kullanıyorsanız ve sağlayıcıyı içeri aktarmak ve paylaşmak için içeri aktarma sağlayıcı kullanıcı arabirimini kullandıysanız, bu bölümdeki yönergeler sizin için geçerli değildir. Paylaşılan tablolara, Unity Kataloğu'nda kayıtlı diğer tüm tablolarda olduğu gibi erişebilirsiniz. delta-sharing Python bağlayıcısını yüklemeniz veya kimlik bilgisi dosyasının yolunu sağlamanız gerekmez. Bkz. Azure Databricks'da sağlayıcıyı içeri aktarma ve paylaşılan verileri okuma.

OpenSharing Python bağlayıcısını yükleme

Sizinle paylaşılan tabloların listesi gibi paylaşılan verilerle ilgili meta verilere erişmek için delta-sharing Python bağlayıcısını yüklemeniz gerekir. Python bağlayıcı sınırlamaları hakkında bilgi için bkz . OpenSharing Python bağlayıcı sınırlamaları.

pip install delta-sharing

Paylaşılan tabloları pandas kullanarak listele

Paylaşımdaki tabloları listelemek için, aşağıdakileri çalıştırın ve <profile-path>/config.share yerine kimlik bilgisi dosyasının konumunu koyun.

import delta_sharing

client = delta_sharing.SharingClient(f"<profile-path>/config.share")

client.list_all_tables()

Çıkış boşsa veya beklediğiniz tabloları içermiyorsa veri sağlayıcısına başvurun.

Paylaşılan verilere pandas kullanarak erişme

Python kullanarak pandas'da paylaşılan verilere erişmek için aşağıdaki komutu çalıştırın ve değişkenleri aşağıdaki gibi değiştirin:

  • <profile-path>: kimlik bilgisi dosyasının konumu.
  • <share-name>: tablo için share= değeri.
  • <schema-name>: tablo için schema= değeri.
  • <table-name>: tablo için name= değeri.
import delta_sharing
delta_sharing.load_as_pandas(f"<profile-path>#<share-name>.<schema-name>.<table-name>")

pandas kullanarak paylaşılan değişiklik veri akışına erişme

Python kullanarak pandas'da paylaşılan bir tablonun değişiklik veri akışına erişmek için aşağıdakini çalıştırın ve değişkenleri aşağıdaki gibi değiştirin. Veri sağlayıcısının tablo için değişiklik veri akışını paylaşıp paylaşmadığına bağlı olarak değişiklik veri akışı mevcut olmayabilir.

  • <starting-version>:opsiyonel. Sorgunun başlangıç sürümü (dahil).
  • <ending-version>:opsiyonel. Sorgunun bitiş sürümü (dahil).
  • <starting-timestamp>:opsiyonel. Sorgunun başlangıç zaman damgası. Bu, bu zaman damgasına eşit veya daha büyük bir sürüm olarak dönüştürülür.
  • <ending-timestamp>:opsiyonel. Sorgunun bitiş zaman damgası. Bu, daha önce oluşturulmuş veya bu zaman damgasına eşit bir sürüme dönüştürülür.
import delta_sharing
delta_sharing.load_table_changes_as_pandas(
  f"<profile-path>#<share-name>.<schema-name>.<table-name>",
  starting_version=<starting-version>,
  ending_version=<ending-version>)

delta_sharing.load_table_changes_as_pandas(
  f"<profile-path>#<share-name>.<schema-name>.<table-name>",
  starting_timestamp=<starting-timestamp>,
  ending_timestamp=<ending-timestamp>)

Çıkış boşsa veya beklediğiniz verileri içermiyorsa veri sağlayıcısına başvurun.

Power BI: Paylaşılan verileri okuma

Power BI OpenSharing bağlayıcısı, OpenSharing açık protokolü aracılığıyla sizinle paylaşılan veri kümelerini bulmanızı, analiz etmenizi ve görselleştirmenizi sağlar.

Requirements

Databricks'e bağlanma

OpenSharing bağlayıcısını kullanarak Azure Databricks bağlanmak için aşağıdakileri yapın:

  1. Uç nokta URL'sini ve belirteci almak için paylaşılan kimlik bilgisi dosyasını bir metin düzenleyicisiyle açın.
  2. Power BI Desktop'i açın.
  3. Veri Al menüsünde OpenSharing araması yapın.
  4. Bağlayıcıyı seçin ve Bağlanöğesine tıklayın.
  5. Kimlik bilgileri dosyasından kopyaladığınız uç nokta URL'sini OpenSharing Sunucusu URL'si alanına girin.
  6. İsteğe bağlı olarak, Gelişmiş Seçenekler sekmesinde, indirebileceğiniz en fazla satır sayısı için Satır Sınırı ayarlayın. Bu, varsayılan olarak 1 milyon satıra ayarlanır.
  7. Tamam'a tıklayın.
  8. Kimlik Doğrulamasıiçin, kimlik bilgileri dosyasından kopyaladığınız belirteci Bearer Tokenalanına yapıştırın.
  9. Bağlan'a tıklayın.

Power BI OpenSharing bağlayıcısının sınırlamaları

Power BI OpenSharing Bağlayıcısı aşağıdaki sınırlamalara sahiptir:

  • Bağlayıcının yüklediği verilerin, makinenizin belleğine sığması gerekir. Bu gereksinimi yönetmek için bağlayıcı, içeri aktarılan satır sayısını, Power BI Desktop'taki Gelişmiş Seçenekler sekmesi altında ayarladığınız Row Limit ile sınırlar.

Tableau: Paylaşılan verileri okuma

Tableau OpenSharing bağlayıcısı, OpenSharing açık protokolü aracılığıyla sizinle paylaşılan veri kümelerini bulmanızı, analiz etmenizi ve görselleştirmenizi sağlar.

Requirements

Azure DataBricks’e bağlanma

OpenSharing bağlayıcısını kullanarak Azure Databricks bağlanmak için aşağıdakileri yapın:

  1. Tableau Exchange gidin, OpenSharing Bağlayıcısı'nı indirmek için yönergeleri izleyin ve uygun bir masaüstü klasörüne yerleştirin.
  2. Tableau Desktop'i açın.
  3. Bağlayıcılar sayfasında "OpenSharing by Databricks" araması yapın.
  4. Karşıya Yükle Paylaş dosyasınıseçin ve sağlayıcı tarafından paylaşılan kimlik bilgisi dosyasını seçin.
  5. Veri Alöğesine tıklayın.
  6. Veri Gezgini'nde tabloyu seçin.
  7. İsteğe bağlı olarak SQL filtreleri veya satır sınırları ekleyin.
  8. Tablo Verilerini Al tıklayın.

Sınırlama

Tableau OpenSharing Bağlayıcısı aşağıdaki sınırlamalara sahiptir:

  • Bağlayıcının yüklediği verilerin, makinenizin belleğine sığması gerekir. Bu gereksinimi yönetmek için bağlayıcı içeri aktarılan satır sayısını Tableau'da ayarladığınız satır sınırıyla sınırlar.
  • Tüm sütunlar Stringtürü olarak döndürülür.
  • SQL Filtresi yalnızca OpenSharing sunucunuz predicateHint'i destekliyorsa çalışır.
  • Silme vektörleri desteklenmez.
  • Sütun eşleme işlemi desteklenmiyor.

OpenSharing Python bağlayıcı sınırlamaları

Bu sınırlamalar OpenSharing Python bağlayıcısına özgü:

  • OpenSharing Python bağlayıcısı 1.1.0+ sütun eşlemesi olan tablolarda anlık görüntü sorgularını destekler, ancak sütun eşlemesi olan tablolardaki CDF sorguları desteklenmez.
  • OpenSharing Python bağlayıcısı, sorgulanan sürüm aralığı sırasında şema değişirse CDF sorgularında use_delta_format=True başarısız olur.

Akış tablosu sınırlamaları

Paylaşılan akış tablosunun yalnızca geçerli anlık görüntüsünü okuyabilirsiniz. Databricks-Open paylaşımında akış tabloları için aşağıdaki özellikler desteklenmez:

  • Tablonun geçmiş verilerini sorgulama
  • Tablonun değişiklik veri akışını (CDF) sorgulama
  • Spark Yapılandırılmış Akış için kaynak olarak tabloyu kullanma

Materyalize edilmiş görünüm sınırlamaları

Yalnızca paylaşılan bir gerçekleştirilmiş görünümün geçerli anlık görüntüsünü okuyabilirsiniz. Databricks’ten Open Sharing’e paylaşımda, Spark Structured Streaming için kaynak olarak somutlaştırılmış bir görünümün kullanılması desteklenmez.

Yeni kimlik bilgisi isteme

Kimlik bilgisi etkinleştirme URL'niz veya indirilen kimlik bilgileriniz kaybolur, bozulur veya gizliliği ihlal edilirse veya sağlayıcınız size yeni bir kimlik bilgisi göndermeden kimlik bilgilerinizin süresi dolarsa, yeni bir kimlik bilgisi istemek için sağlayıcınıza başvurun.

Unity Catalog'da kimlik bilgilerini sağlayıcı nesnesi olarak içeri aktaran bir Azure Databricks kullanıcısıysanız, Databricks REST API'sini kullanarak yeni kimlik bilgilerini kullanın. Bkz. Açık alıcılar için kimlik bilgilerini döndürme.