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.
Ayrıntılı erişim denetimi, görünümleri, satır filtrelerini ve sütun maskelerini kullanarak belirli verilere erişimi kısıtlamanızı sağlar. Bu sayfada, sunucusuz işlemin ayrılmış işlem kaynaklarında ayrıntılı erişim denetimlerini zorunlu kılmak için nasıl kullanıldığı açıklanmaktadır.
Uyarı
Ayrılmış hesaplama, Ayrılmış erişim modu (eski adıyla tek kullanıcı erişim modu) ile yapılandırılmış çok amaçlı veya iş amaçlı bir hesaplamadır. Bkz. Erişim modları.
Gereksinimler
Ayrıntılı erişim denetimleriyle bir görünüm veya tabloyu sorgulamak için özel işlem kullanın.
- Ayrılmış işlem kaynağı Databricks Runtime 15.4 LTS veya üzerinde olmalıdır.
- Sunucusuz işlem için çalışma alanının etkinleştirilmesi gerekir.
Ayrılmış işlem kaynağınız ve çalışma alanınız bu gereksinimleri karşılıyorsa veri filtreleme otomatik olarak çalıştırılır.
Veri filtreleme ayrılmış işlemde nasıl çalışır?
Ayrılmış işlem, ayrıntılı erişim denetimlerini yerel olarak zorlayan standart işlemden farklı olarak, kullanıcı kodunun temel makineye ayrıcalıklı erişimi olan bir JVM'yi paylaştığı geleneksel Spark mimarisini kullanır. Bir kullanıcı, filtreler çalıştırılmadan önce filtrelenmemiş temel verilere erişebileceğinden, satır filtrelerini ve sütun maskelerini doğrudan ayrılmış işlem kümesi üzerinde uygulamak gereğinden fazla veri çekilmesi riskini doğurur.
Bu riski almadan ayrıntılı erişim denetimlerini uygulamak için, ayrılmış işlem filtrelemeyi çalışma alanınızın Lakeguard tarafından yalıtılan sunucusuz işlem kaynaklarına devreder. Bir sorgu ayrıntılı erişim denetimleri içeren bir veritabanı nesnesine her eriştiğinde, ayrılmış işlem kaynağı veri filtrelemeyi gerçekleştirmek için sorguyu çalışma alanınızın sunucusuz işlemine geçirir. Filtrelenen veriler daha sonra çalışma alanı iç bulut depolama alanında geçici dosyalar kullanılarak sunucusuz ve ayrılmış işlem kaynakları arasında aktarılır.
Azure Databricks, geçici sonuç kümelerini iç çalışma alanı depolama alanına (çalışma alanınızın DBFS kökü) yazan Cloud Fetch özelliğini kullanarak filtrelenmiş verileri aktarır. Azure Databricks bu dosyaları otomatik olarak çöp olarak toplar, 24 saat sonra silinmek üzere işaretler ve ek 24 saat sonra kalıcı olarak siler.
Bu işlev aşağıdaki veritabanı nesneleri için geçerlidir:
- dinamik görünümler
- Satır filtreleri veya sütun maskeleri olan tablolar
- Kullanıcının üzerinde ayrıcalığı olmayan tablolar üzerinde oluşturulmuş
SELECT - Gerçekleştirilmiş görünümler
- Akış Tabloları
Aşağıdaki diyagramda, satır filtreleri uygulanmış SELECT, table_1 ve view_2 üzerinde bir kullanıcının table_w_rls ayrıcalığı vardır. Kullanıcının, SELECT tarafından referans alınan table_2 üzerinde view_2 ayrıcalığı yoktur.
table_1 üzerindeki sorgu tamamen ayrılmış işlem kaynağı tarafından işlenir çünkü filtreleme gerekmez. üzerinde yapılan sorgular view_2 ve table_w_rls kullanıcının erişimi olan verileri döndürmek için veri filtrelemesi gerektirir. Bu sorgular sunucusuz işlemdeki veri filtreleme özelliği tarafından işlenir.
Yazma işlemleri desteği
Databricks Runtime 16.3 ve üzerinde, şu seçenekleri kullanarak satır filtreleri veya sütun maskeleri uygulanmış tablolara yazabilirsiniz:
-
MERGE INTO SQL komutunu kullanarak
INSERT,UPDATEveDELETEişlevselliğini elde edebilirsiniz. - Delta birleştirme işlemi.
-
DataFrame.write.mode("append")API'si.
INSERT, UPDATE, ve DELETE işlevlerini elde etmek için bir hazırlama tablosu ve MERGE INTO deyiminin WHEN MATCHED ve WHEN NOT MATCHED yan tümcelerini kullanabilirsiniz.
Aşağıdaki UPDATE kullanılarak bir MERGE INTO örneğidir:
MERGE INTO target_table AS t
USING source_table AS s
ON t.id = s.id
WHEN MATCHED THEN
UPDATE SET
t.column1 = s.column1,
t.column2 = s.column2;
Aşağıdaki INSERT kullanılarak bir MERGE INTO örneğidir:
MERGE INTO target_table AS t
USING source_table AS s
ON t.id = s.id
WHEN NOT MATCHED THEN
INSERT (id, column1, column2) VALUES (s.id, s.column1, s.column2);
Aşağıda MERGE INTO kullanılarak bir DELETE örneği verilmiştir.
MERGE INTO target_table AS t
USING source_table AS s ON t.id = s.id
WHEN MATCHED AND s.some_column = TRUE THEN DELETE;
DDL, SHOW, DESCRIBE ve diğer komutlar için destek
Databricks Runtime 17.1 ve üzeri sürümlerde, özel hesaplama ortamındaki ince erişim kontrolüne sahip nesnelerle birlikte aşağıdaki komutları kullanabilirsiniz:
- DDL deyimleri
- SHOW deyimleri
- DESCRIBE deyimleri
- OPTIMIZE
- DESCRIBE HISTORY
- FSCK REPAIR TABLE (Databricks Runtime 17.2 ve üzeri)
Gerekirse, bu komutlar sunucusuz işlemde otomatik olarak çalıştırılır.
VACCUMRESTORE, ve REORG TABLEgibi bazı komutlar desteklenmez.
Sunucusuz işlem maliyetleri
Müşteriler, veri filtreleme işlemleri gerçekleştiren sunucusuz işlem kaynakları için ücretlendirilir. Fiyatlandırma bilgileri için bkz . Platform Katmanları ve Eklentiler.
Erişimi olan kullanıcılar, ne kadar ücretlendirildiklerini görmek için tabloyu sorgulayabilir system.billing.usage . Örneğin, aşağıdaki sorgu işlem maliyetlerini kullanıcıya göre ayırır:
SELECT usage_date,
sku_name,
identity_metadata.run_as,
SUM(usage_quantity) AS `DBUs consumed by FGAC`
FROM system.billing.usage
WHERE usage_date BETWEEN '2024-08-01' AND '2024-09-01'
AND billing_origin_product = 'FINE_GRAINED_ACCESS_CONTROL'
GROUP BY 1, 2, 3 ORDER BY 1;
Veri filtreleme etkin olduğunda sorgu performansını görüntüleme
Ayrılmış işlem için Spark kullanıcı arabirimi, sorgularınızın performansını anlamak için kullanabileceğiniz ölçümleri görüntüler. İşlem kaynağında çalıştırdığınız her sorgu için SQL/Dataframe sekmesi sorgu grafiği gösterimini görüntüler. Veri filtrelemeye bir sorgu dahil edildiyse, kullanıcı arabirimi grafiğin alt kısmında RemoteSparkConnectScan işleci düğümünü görüntüler. Bu düğüm, sorgu performansını araştırmak için kullanabileceğiniz ölçümleri görüntüler. Bkz. Spark kullanıcı arabiriminde işlem bilgilerini görüntüleme.
Aşağıdaki gibi soruları ele alan ölçümleri görmek için RemoteSparkConnectScan işleç düğümünü genişletin:
- Veri filtreleme ne kadar sürdü? "Toplam uzaktan yürütme süresi" öğesini görüntüleyin.
- Veri filtrelemeden sonra kaç satır kaldı? "Satır çıktısını" görüntüleyin.
- Veri filtrelemeden sonra ne kadar veri (bayt cinsinden) döndürüldü? "Satır çıktı boyutu"nu görüntüleyin.
- Bölüm ayıklaması yapılmış ve depolama alanından okunması gerekmeyen veri dosyası sayısını öğrenin. "Ayıklaması yapılan dosyalar" ve "Ayıklama yapılan dosyaların boyutu" dosyalarını görüntüleyin.
- Depolamadan okunması gereken ve budanamayan kaç veri dosyası vardı? "Okunan dosyalar" ve "Okunan dosyaların boyutu" dosyalarını görüntüleyin.
- Okunacak dosyalardan kaçı zaten önbellekteydi? "Önbellek isabet boyutu" ve "Önbellek kaçırma boyutu"nu görüntüleyin.
Sınırlamalar
İnce taneli erişim kontrolü, sunucusuz hesaplama erişim kontrollerine bağlı değildir veya buna saygı göstermez. Kullanıcının özel hesaplamaya erişimi, ince taneli erişim kontrolü kullanıp kullanamayacağını belirler; Veri filtreleme yapan sunucusuz hesaplama, kullanıcının varsayılan sunucusuz hesaplama nesnelerinde izinlerine bakılmaksızın çalışır.
Akış tablolarında yalnızca toplu okumalar desteklenir. Satır filtreleri veya sütun maskeleri olan tablolar, ayrılmış işlemde akış iş yüklerini desteklemez.
Varsayılan katalog (
spark.sql.catalog.spark_catalog) değiştirilemez.spark.catalog.listColumns()desteklenmez. Bunun yerine sütun adlarını listelemek,SHOW COLUMNS INbölüm sütunlarını listelemek veyaSHOW PARTITIONSayrıntılı bir tablo açıklaması almak için kullanabilirsinizDESCRIBE TABLE [EXTENDED [AS JSON]].Databricks Runtime 17.0 ve altındaki sürümlerde, ince taneli erişim denetimlerine sahip tablolar için
spark.catalog.tableExists()desteklenmez.Databricks Runtime 16.2 ve altında, satır filtreleri veya sütun maskeleri uygulanmış tablolarda tablo yazma veya yenileme işlemleri desteklenmez.
Özellikle
INSERTgibi DML işlemleri,DELETE,UPDATE,REFRESH TABLEveMERGEdesteklenmez. Bu tablolardan yalnızca (SELECT) okuyabilirsiniz.Databricks Runtime 16.3 ve üzerinde,
INSERT,DELETEveUPDATEgibi tablo işlemleri desteklenmez, ancakMERGEkullanılarak yapılabilir.FGAC özellikli tablolarla ayrılmış işlem kullanılırken
DeltaTable.forName()veyaDeltaTable.forPath()kullanılırken yalnızcamerge()vetoDF()işlemleri desteklenir. Diğer DeltaTable işlemleri için bunun yerine ilgili SQL komutlarını kullanın. Örneğin,history()yerineDESCRIBE HISTORYveclone()yerineSHALLOW CLONEveyaDEEP CLONEkullanın.Databricks Runtime 16.2 ve altında, veri filtreleme çağrıldığında otomatik birleşimler varsayılan olarak engellenir çünkü bu sorgular aynı uzak tablonun farklı anlık görüntülerini döndürebilir. Ancak, bu komutları çalıştırdığınız işlemde
spark.databricks.remoteFiltering.blockSelfJoinsfalseolarak ayarlayarak bu sorguları etkinleştirebilirsiniz.Databricks Runtime 16.3 ve üzerindeki sürümlerde, anlık görüntüler ayrılmış ve sunucusuz hesaplama kaynakları arasında otomatik olarak eşitlenir. Bu eşitleme nedeniyle, veri filtreleme işlevini kullanan kendi kendine birleştirme sorguları aynı anlık görüntüleri döndürür ve varsayılan olarak etkinleştirilir. İstisnalar, somutlaştırılmış görünümler ile OpenSharing kullanılarak paylaşılan tüm görünümler, somutlaştırılmış görünümler ve akış tablolarıdır. Bu nesneler için kendi kendine birleşimler varsayılan olarak engellenir, ancak bu komutları çalıştırdığınız işlemde
spark.databricks.remoteFiltering.blockSelfJoinsfalse olarak ayarlayarak bu sorguları etkinleştirebilirsiniz.Gerçekleştirilmiş görünümler ile herhangi bir görünüm, gerçekleştirilmiş görünüm veya akış tablosu için kendi kendine birleştirme sorgularını etkinleştirirseniz, birleştirilen nesnelere eş zamanlı yazma işlemi olmadığından emin olmanız gerekir.
- Docker görüntülerinde destek yok.
- Databricks Container Services kullanılırken destek alınmaz.
- Ayrılmış işlemde ayrıntılı erişim denetimini etkinleştirmek için 8443 ve 8444 bağlantı noktalarını açmanız gerekir. Azure sanal ağınızda "Azure Databricks'i dağıtma (VNet entegrasyonu)" konusuna bakın.