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.
Doku Veri Ambarı için Spark bağlayıcısı, Spark geliştiricilerinin ve veri bilim adamlarının bir depodaki verilere ve bir göl binasının SQL analiz uç noktasından verilere erişmesine ve verilerle çalışmasına olanak tanır. Bağlayıcı aşağıdaki özellikleri sunar:
- Aynı çalışma alanında veya birden çok çalışma alanında bir ambardan veya SQL analiz uç noktasından verilerle çalışabilirsiniz.
- Bir Lakehouse'un SQL analiz uç noktası, çalışma alanı bağlamı temelinde otomatik olarak bulunur.
- Bağlayıcı basitleştirilmiş bir Spark API'sine sahiptir, temel karmaşıklığı soyutlar ve tek bir kod satırıyla çalışır.
- Bir tabloya veya görünüme erişirken bağlayıcı, SQL altyapısı düzeyinde tanımlanan güvenlik modellerini destekler. Bu modeller nesne düzeyinde güvenlik (OLS), satır düzeyi güvenlik (RLS) ve sütun düzeyinde güvenlik (CLS) içerir.
- Bağlayıcı, Fabric çalışma zamanında önceden yüklü olarak gelir, bu da ayrı bir yükleme gereksinimini ortadan kaldırır.
Kimlik Doğrulaması
Microsoft Entra kimlik doğrulaması tümleşik bir kimlik doğrulama yaklaşımıdır. Kullanıcılar Microsoft Fabric çalışma alanında oturum açar ve kimlik bilgileri kimlik doğrulaması ve yetkilendirme için otomatik olarak SQL altyapısına geçirilir. Kimlik bilgileri otomatik olarak eşlenir ve kullanıcıların belirli yapılandırma seçeneklerini sağlaması gerekmez.
Not
Doku Veri Ambarı için Spark bağlayıcısı yalnızca etkileşimli Microsoft Entra kullanıcı kimlik doğrulamasını destekler. Hizmet sorumlusu kimlik doğrulaması desteklenmez.
İzinler
SQL altyapısına bağlanmak için, kullanıcıların ambar veya SQL analiz uç noktasında (öğe düzeyi) en az Okuma iznine (SQL Server'da BAĞLANMA iznine benzer) olması gerekir. Kullanıcıların belirli tablo veya görünümlerdeki verileri okumak için ayrıntılı nesne düzeyinde izinlere de sahip olması gerekir. Daha fazla bilgi edinmek için bkz . Microsoft Fabric'te veri ambarı için güvenlik.
Kod şablonları ve örnekler
Yöntem imzası kullanma
Aşağıdaki komut, okuma isteği için yöntem imzasını gösterir synapsesql . Üç bölümden tableName oluşan bağımsız değişken, bir depodan tablolara veya görünümlere ve bir lakehouse'un SQL analitik uç noktasına erişim sağlamak için gereklidir. Argümanı senaryonuza göre şu adlarla güncelleyin.
- Bölüm 1: Deponun veya göl binasının adı.
- Bölüm 2: Şemanın adı.
- Bölüm 3: Tablonun veya görünümün adı.
synapsesql(tableName:String="<Part 1.Part 2.Part 3>") => org.apache.spark.sql.DataFrame
Bir tablodan veya görünümden doğrudan okumanın yanı sıra, bu bağlayıcı SQL altyapısına geçirilen ve sonucu Spark'a geri döndürülen özel veya geçiş sorgusu belirtmenize de olanak tanır.
spark.read.option(Constants.DatabaseName, "<warehouse/lakeshouse name>").synapsesql("<T-SQL Query>") => org.apache.spark.sql.DataFrame
Bu bağlayıcı belirtilen ambar / lakehouse için uç noktayı otomatik olarak bulur, ancak açıkça belirtmek isterseniz, bunu yapabilirsiniz.
//For warehouse
spark.conf.set("spark.datawarehouse.<warehouse name>.sqlendpoint", "<sql endpoint,port>")
//For lakehouse
spark.conf.set("spark.lakehouse.<lakeshouse name>.sqlendpoint", "<sql endpoint,port>")
//Read from table
spark.read.synapsesql("<warehouse/lakeshouse name>.<schema name>.<table or view name>")
Aynı çalışma alanı içindeki verileri okuma
Önemli
Bu içeri aktarma deyimlerini not defterinizin başında veya bağlayıcıyı kullanmaya başlamadan önce çalıştırın:
import com.microsoft.spark.fabric
from com.microsoft.spark.fabric.Constants import Constants
Aşağıdaki kod, Spark DataFrame'deki bir tablodan veya görünümden verileri okumak için bir örnektir:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")
Aşağıdaki kod, Spark DataFrame'de satır sayısı sınırı 10 olan bir tablodan veya görünümden veri okuma örneğidir:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").limit(10)
Aşağıdaki kod, bir filtre uyguladıktan sonra Spark DataFrame'deki bir tablodan veya görünümden verileri okumak için bir örnektir:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").filter("column name == 'value'")
Aşağıdaki kod, yalnızca seçili sütunlar için bir tablodaki veya Spark DataFrame'deki görünümdeki verileri okumak için bir örnektir:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").select("column A", "Column B")
Çalışma alanları arasında veri okuma
Çalışma alanları arasında bir ambardan veya göl evinden verilere erişmek ve verileri okumak için, ambarınızın veya göl evinizin bulunduğu çalışma alanı kimliğini ve ardından göl evi veya ambar öğesi kimliğini belirtebilirsiniz. Aşağıdaki satır, belirtilen çalışma alanı kimliği ve lakehouse/depo kimliği ile depo veya lakehouse'dan Spark DataFrame'deki bir tablo veya görünümden veri okuma örneği sunar:
# For lakehouse
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").synapsesql("<lakehouse name>.<schema name>.<table or view name>")
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").option(Constants.LakehouseId, "<lakehouse item id>").synapsesql("<lakehouse name>.<schema name>.<table or view name>")
# For warehouse
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").synapsesql("<warehouse name>.<schema name>.<table or view name>")
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").option(Constants.DatawarehouseId, "<warehouse item id>").synapsesql("<warehouse name>.<schema name>.<table or view name>")
Not
Not defterini çalıştırdığınızda, bağlayıcı varsayılan olarak not defterine bağlı göl evi çalışma alanında belirtilen ambarı veya göl evini arar. Başka bir çalışma alanındaki bir ambara veya göle başvurmak için, çalışma alanı kimliğini ve göl evi veya ambar öğesi kimliğini yukarıda gösterildiği gibi belirtin.
Bir depodaki verilerden faydalanarak bir lakehouse tablosu oluşturma
Bu kod satırları, Spark DataFrame'deki bir tablodan veya görünümden verileri okumak ve lakehouse tablosu oluşturmak için bunu kullanmak için bir örnek sağlar:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")
df.write.format("delta").saveAsTable("<Lakehouse table name>")
Spark veri çerçevesi verilerini ambar tablosuna yazma
Bu bağlayıcı, bir Doku DW tablosuna iki aşamalı bir yazma süreci uygular. Başlangıçta, Spark veri çerçevesi verilerini bir ara depolamaya yerleştirir, ardından COPY INTO komutunu kullanarak verileri Fabric Veri Ambarı tablosuna yükler. Bu yaklaşım, artan veri hacmiyle ölçeklenebilirlik sağlar.
Desteklenen DataFrame kaydetme modları
Bir veri çerçevesinin kaynak verileri ambardaki hedef tabloya yazılırken aşağıdaki kaydetme modları desteklenir:
- ErrorIfExists (varsayılan kaydetme modu): Hedef tablo varsa, yazma işlemi çağrıyı yapan kişiye döndürülen bir özel durumla durdurulur. Aksi halde, verilerle yeni bir tablo oluşturulur.
- Görmezden gel: Hedef tablo mevcutsa, yazma işlemi hata döndürmeden yazma isteğini görmezden gelir. Aksi halde, verilerle yeni bir tablo oluşturulur.
- Üzerine yaz: Hedef tablo varsa, hedefteki mevcut veriler verilerle değiştirilir. Aksi halde, verilerle yeni bir tablo oluşturulur.
- Ekleme: Hedef tablo varsa, yeni veriler bu tabloya eklenir. Aksi halde, verilerle yeni bir tablo oluşturulur.
Aşağıdaki kod, Spark veri çerçevesinin verilerini bir Fabric DW tablosuna yazma örneklerini gösterir:
df.write.synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>") # this uses default mode - errorifexists
df.write.mode("errorifexists").synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>")
df.write.mode("ignore").synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>")
df.write.mode("append").synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>")
df.write.mode("overwrite").synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>")
Not
Lakehouse'un SQL analiz uç noktası yalnızca okunabilir olduğundan, bağlayıcı yalnızca bir Doku DW tablosuna yazmayı destekler.
Sorun giderme
Tamamlandıktan sonra, hücrenin çıkışında okuma yanıtı kesiti görünür. Geçerli hücredeki hata, not defterinin sonraki hücre yürütmelerini de iptal eder. Ayrıntılı hata bilgileri Spark uygulama günlüklerinde bulunur.
Bu bağlayıcıyı kullanmayla ilgili dikkat edilmesi gerekenler
Şu anda bağlayıcı:
- Lakehouse öğelerinin Fabric depolarından ve SQL analiz uç noktalarından veri alımını veya okuma işlemlerini destekler.
- Farklı kaydetme modlarını kullanarak bir ambar tablosuna veri yazmayı destekler. Bu yalnızca en son GA çalışma zamanı olan Çalışma Zamanı 1.3 ile kullanılabilir.
-
Private LinkKiracı düzeyinde etkin yazma işlemi desteklenmez vePrivate Linkçalışma alanı düzeyinde etkinleştirildiğinde hem okuma hem de yazma işlemleri desteklenmez. - Fabric DW artık
Time Traveldestekliyor, ancak bu bağlayıcı zaman yolculuğu söz dizimi içeren bir sorguda çalışmaz. - Tutarlılık için Azure Synapse Analytics için Apache Spark ile birlikte gönderilen kullanım imzasını korur. Ancak Azure Synapse Analytics'te ayrılmış bir SQL havuzuna bağlanmak ve bu havuzla çalışmak geriye dönük olarak uyumlu değildir.
- Özel karakterler içeren sütun adları, 3 bölümlü tablo/görünüm adı temelinde sorgu gönderilmeden önce kaçış karakteri eklenerek işlenir. Özel veya geçişli sorgu tabanlı okuma durumunda, kullanıcıların özel karakterler içeren sütun adlarından kaçması gerekir.