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.
Sorgu federasyonu ile sorgular JDBC API'leri kullanılarak yabancı veritabanına iletilir. Sorgu hem Databricks'te hem de uzak işlem kullanılarak yürütülür. Sorgu federasyonu MySQL, PostgreSQL, Redshift, Teradata ve daha fazlası gibi kaynaklar için kullanılır.
Neden Lakehouse Federasyonu Kullanmalısınız?
Lakehouse, veri yedekliliğini ve yalıtımını azaltmak için verilerin merkezi depolanmasını vurgular. Kuruluşunuzun üretimde çok sayıda veri sistemi olabilir ve bağlı sistemlerdeki verileri çeşitli nedenlerle sorgulamak isteyebilirsiniz:
- İsteğe bağlı raporlama.
- Kavram kanıtı çalışması.
- Yeni ETL işlem hatlarının veya raporların keşif aşaması.
- Artımlı geçiş sırasında iş yüklerini destekleme.
Bu senaryoların her birinde sorgu federasyonu, verileri yerinde sorgulayabileceğiniz ve karmaşık ve zaman alan ETL işlemlerinden kaçınabileceğiniz için daha hızlı içgörü elde etmenize olanak sağlar.
Sorgu federasyonu aşağıdaki durumlarda kullanım örneklerine yöneliktir:
- Verileri Azure Databricks'e almak istemiyorsunuz.
- Sorgularınızın dış veritabanı sistemindeki işlemden yararlanmasını istiyorsunuz.
- Unity Kataloğu arabirimlerinin ve ayrıntılı erişim denetimi, veri kökeni ve arama gibi veri idaresinin avantajlarından yararlanmak istiyorsunuz.
Sorgu federasyonu ve Lakeflow Connect karşılaştırması
Sorgu federasyonu, verilerinizi taşımadan dış veri kaynaklarını sorgulamanıza olanak tanır. Databricks, yüksek veri hacimlerine ve daha düşük sorgu gecikme süresine uyum sağlamak için ölçeklendirildiklerinden Lakeflow Connect yönetilen bağlayıcılarının kullanılmasını önerir. Ancak, verilerinizi taşımadan sorgulamak isteyebilirsiniz. Yönetilen alım bağlayıcıları ile sorgu federasyonu arasında seçim yaptığınızda, ad hoc raporlama veya ETL işlem hatlarınızda kavram kanıtı çalışmaları için sorgu federasyonunu seçin.
Kaynağınız destekliyorsa sorgu tabanlı alma bağlayıcıları, CDC bağlayıcılarına alternatif olarak hafif bir Lakeflow Connect seçeneğidir. Bir imleç sütununu kullanarak kaynağı doğrudan belirli bir zaman çizelgesine göre sorgular, bir ağ geçidi veya hazırlama depolaması gerektirmeden. Yinelenen alıma ihtiyacınız olduğunda ancak kullanılabilir CDC altyapısına sahip olmadığınızda sorgu tabanlı alım bağlayıcılarını kullanın.
Sorgu federasyon kurulumuna genel bakış
Lakehouse Federation kullanarak bir veri kümesini salt okunur sorgulama için kullanılabilir hale getirmek için aşağıdakileri oluşturursunuz:
- Bağlantı, Unity Kataloğu'nda bir dış veritabanı sistemine erişmek için bir yol ve kimlik bilgileri belirten güvenli hale getirilebilir bir nesne.
- Unity Kataloğu'nda güvenliği sağlanabilir bir nesne olan, dış veri sistemindeki bir veritabanını yansıtan yabancı bir katalog, Unity Kataloğu'nu kullanarak erişimi yönetirken, Azure Databricks çalışma alanınızda bu veri sisteminde salt okunur sorgular gerçekleştirmenize olanak tanır.
Desteklenen veri kaynakları
Sorgu federasyonu aşağıdaki kaynaklara bağlantıları destekler:
- MySQL
- PostgreSQL
- Teradata
- Oracle
- Amazon Redshift
- Salesforce Data 360
- Snowflake
- Microsoft SQL Server
- Azure Synapse (SQL Veri Ambarı)
- Google BigQuery
- Databricks
Bağlantı gereksinimleri
Çalışma alanı gereksinimleri:
- Unity Kataloğu için etkinleştirilen çalışma alanı. Otomatik meta veri deposu sağlama dahil olmak üzere, 9 Kasım 2023'den sonra oluşturulan çalışma alanları Unity Kataloğu için otomatik olarak etkinleştirilir. Çalışma alanınız otomatik etkinleştirmeden önce gelmediği ve Unity Kataloğu için etkinleştirilmediği sürece el ile meta veri deposu oluşturmanız gerekmez. Bkz. Unity Kataloğu'nu kullanmaya başlama.
İşlem gereksinimleri:
- İşlem kaynağınızdan hedef veritabanı sistemlerine ağ bağlantısı. Bkz: Lakehouse Federasyonu için Ağ Önerileri.
- Azure Databricks işlem birimi, Databricks Runtime 13.3 LTS veya daha üstünü ve Standard veya Dedicated erişim modunu kullanmalıdır.
- SQL ambarları profesyonel veya sunucusuz olmalı ve 2023.40 veya üzerini kullanmalıdır.
Gerekli izinler:
- Bağlantı oluşturmak için meta veri deposu yöneticisi veya çalışma alanına bağlı Unity Kataloğu meta veri deposunda
CREATE CONNECTIONayrıcalığına sahip bir kullanıcı olmanız gerekir. Unity Kataloğu için otomatik olarak etkinleştirilen çalışma alanlarında, çalışma alanı yöneticileri varsayılan olarak ayrıcalıklaraCREATE CONNECTIONsahiptir. - Yabancı katalog oluşturmak için meta veri deposunda
CREATE CATALOGiznine sahip olmanız ve bağlantının sahibi olmanız veya bağlantıdaCREATE FOREIGN CATALOGayrıcalığına sahip olmanız gerekir. Unity Kataloğu için otomatik olarak etkinleştirilen çalışma alanlarında, çalışma alanı yöneticileri varsayılan olarak ayrıcalıklaraCREATE CATALOGsahiptir.
Aşağıdaki her görev tabanlı bölümde ek izin gereksinimleri belirtilir.
Bağlantı oluşturma
Bağlantı, bir dış veritabanı sistemine erişmek için bir yol ve kimlik bilgileri belirtir. Bağlantı oluşturmak için, bir Azure Databricks not defterinde veya Databricks SQL sorgu düzenleyicisinde Katalog Gezgini'ni veya CREATE CONNECTION SQL komutunu kullanabilirsiniz.
Note
Bağlantı oluşturmak için Databricks REST API'sini veya Databricks CLI'yi de kullanabilirsiniz. Bkz. POST /api/2.1/unity-catalog/connections ve Unity Catalog komutları.
Gerekli izinler: Meta veri deposu yöneticisi veya ayrıcalığına CREATE CONNECTION sahip kullanıcı.
Katalog Tarayıcısı
Azure Databricks çalışma alanınızda
Catalog öğesine tıklayın.
Katalog bölmesinin üst kısmında
tıklayın ve menüden Bağlantı oluştur'u seçin.Kullanıcı dostu birBağlantı adı girin.
Bağlantı türünü (MySQL veya PostgreSQL gibi veritabanı sağlayıcısı) seçin.
(İsteğe bağlı) Açıklama ekleyin.
Nextöğesine tıklayın.
Bağlantı özelliklerini (konak bilgileri, yol ve erişim kimlik bilgileri gibi) girin.
Her bağlantı türü farklı bağlantı bilgileri gerektirir. Soldaki içindekiler tablosunda listelenen bağlantı türünüzün makalesine bakın.
Bağlantı oluştur'a tıklayın.
Yabancı katalog için bir ad girin.
(İsteğe bağlı) Çalıştığını onaylamak için Bağlantıyı test et'e tıklayın.
Katalog oluştur'a tıklayın.
Kullanıcıların oluşturduğunuz kataloğa erişebileceği çalışma alanlarını seçin. Tüm çalışma alanları erişilebilirseçebilir veya Çalışma alanına ata'ya tıklayın, çalışma alanlarını seçin ve ardından Atatıklayın.
Katalogdaki tüm nesnelere erişimi yönetebilecek Sahip'i değiştirin. Metin kutusuna bir yetkilinin adını yazmaya başlayın ve ardından sonuçlar arasında listelenen yetkiliye tıklayın.
Katalogda Ayrıcalıkları tanımlayın. Grant'e tıklayın
- Katalogdaki nesnelere erişimi olacak
Sorumlularını belirtin. Metin kutusuna bir yetkilinin adını yazmaya başlayın ve ardından sonuçlar arasında listelenen yetkiliye tıklayın. -
İmtiyaz ön ayarlarını her bir sorumluya vermek için seçin. Tüm hesap kullanıcılarına varsayılan olarak
BROWSEverilir.- Katalogdaki nesnelerde
ayrıcalıkları vermek için açılan menüden veri okuyucu seçin. - Katalogdaki nesnelerde ve
readayrıcalıkları vermek için açılan menüdenmodifyseçin. - Vermek istediğiniz ayrıcalıkları el ile seçin.
- Katalogdaki nesnelerde
- İzin Ver'e tıklayın.
- Nextöğesine tıklayın.
- Meta Veriler sayfasında etiket anahtar-değer çiftlerini belirtin. Daha fazla bilgi için bkz. Unity Kataloğu'ndaki güvenli nesnelere etiket uygulama.
- (İsteğe bağlı) Açıklama ekleyin.
- Kaydet'e tıklayın.
- Katalogdaki nesnelere erişimi olacak
SQL
Not defterinde veya SQL sorgu düzenleyicisinde aşağıdaki komutu çalıştırın. Bu örnek, PostgreSQL veritabanına bağlantılar içindir. Seçenekler bağlantı türüne göre farklılık gösterir. Soldaki içindekiler tablosunda listelenen bağlantı türünüzün makalesine bakın.
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Kimlik bilgileri gibi hassas değerler için düz metin dizeleri yerine Azure Databricks secrets kullanmanızı öneririz. Örneğin:
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
Gizlilik ayarlama hakkında bilgi için bkz Gizlilik yönetimi.
Mevcut bağlantıları yönetme hakkında bilgi için bkz Lakehouse Federation için Bağlantıları Yönetme.
Yabancı katalog oluşturma
Note
Kullanıcı arabirimini veri kaynağına bağlantı oluşturmak için kullanırsanız, yabancı katalog oluşturma dahil edilir ve bu adımı atlayabilirsiniz.
Yabancı katalog, dış veri sistemindeki bir veritabanını yansıtır; böylece Azure Databricks ve Unity Kataloğu'nu kullanarak bu veritabanındaki verilere erişimi sorgulayabilir ve yönetebilirsiniz. Yabancı katalog oluşturmak için, önceden tanımlanmış olan veri kaynağına bir bağlantı kullanırsınız.
Yabancı katalog oluşturmak için, bir Azure Databricks not defterinde veya SQL sorgu düzenleyicisinde Katalog Gezgini'ni veya CREATE FOREIGN CATALOG SQL komutunu kullanabilirsiniz. Unity Kataloğu API'sini de kullanabilirsiniz. bkz. Azure Databricks başvuru belgeleri.
Dış katalog meta verileri, katalogla her etkileşimde Unity Kataloğu'na eşitlenir. Unity Kataloğu ile veri kaynağı arasındaki veri türü eşlemesi için, her veri kaynağının belgelerinin Veri Türü Eşlemeleri bölümüne bakın.
Gerekli izinler:CREATE CATALOG meta veri deposu üzerindeki izin ve bağlantının sahipliği veya bağlantı üzerindeki CREATE FOREIGN CATALOG ayrıcalık.
Katalog Tarayıcısı
Azure Databricks çalışma alanınızda katalog gezginini açmak için
Catalog öğesine tıklayın.
Katalog bölmesinin üst kısmında
Veri ekle simgesine tıklayın ve menüden Katalog oluştur'u seçin.Alternatif olarak,
Hızlı erişim sayfasında Kataloglardüğmesine tıklayın ve ardından Katalog oluştur düğmesine tıklayın. katalog oluşturma bölümünde yabancı katalog oluşturma yönergelerini izleyin.
SQL
Not defterinde veya SQL sorgu düzenleyicisinde aşağıdaki SQL komutunu çalıştırın. Kare parantez içindeki öğeler isteğe bağlıdır. Yer tutucu değerlerini değiştirin:
-
<catalog-name>: Azure Databricks katalog adı. -
<connection-name>: Veri kaynağını, yolu ve erişim kimlik bilgilerini belirten bağlantı nesnesi. -
<database-name>: Azure Databricks'da katalog olarak yansıtmak istediğiniz veritabanının adı. İki katmanlı ad alanı kullanan MySQL için gerekli değildir. -
<external-catalog-name>: Databricks'ten-Databricks'e yalnızca: Yansıttığınız dış Databricks çalışma alanındaki kataloğun adı. Bkz. Yabancı katalog oluşturma.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Yabancı kataloğun erişim kimlik bilgileri adlandırılmış bağlantıdan gelir, bu nedenle bunları burada belirtemezsiniz. Bağlantıyı oluşturduğunuzda, yukarıdaki bağlantı örneğinde gösterildiği gibi düz metin dizeleri yerine Azure Databricks gizli dizileri kullanarak kimlik bilgilerini sağlayın.
Yabancı katalogları yönetme ve bunlarla çalışma hakkında bilgi için bkz . Yabancı katalogları yönetme ve bunlarla çalışma.
Meta verileri yenileme
Unity Kataloğu, sorgu zamanında yabancı tablolar için meta verileri otomatik olarak yeniler. Dış kataloğun şeması değişirse Unity Kataloğu sorgu çalıştırıldığında en son meta verileri getirir. Bu davranış şemayı güncel tutar ve çoğu iş yükü için en uygun seçenektir.
Ancak Databricks, aşağıdaki durumlarda meta verilerin el ile yenilenmesini önerir:
- Harici motorlar tarafından erişilen dış tabloların tutarlılığını korumak için. Databricks Runtime'ı atlayan yollar otomatik yenilemeleri tetiklemez ve bu da eski meta verilere neden olabilir.
- Sorgu yürütme sırasında meta veri yenilemesini önlemek istediğiniz iş yüklerinin performansını geliştirmek için. Meta verileri önceden yenilemek, önbelleğe alınmış meta verileri kullanarak sorguların daha hızlı çalışmasını sağlar. Bu yaklaşım, yabancı katalog oluşturulduktan hemen sonra özellikle kullanışlıdır, çünkü aksi takdirde ilk sorgu tam bir yenilemeyi tetikler.
Lakeflow Jobs ile metaverileri otomatik olarak yenileştirme
SQL komutuyla bir Lakeflow İşi kullanarak düzenli aralıklarla meta veri yenilemesi REFRESH FOREIGN zamanlayın. Örneğin:
-- Refresh an entire catalog
REFRESH FOREIGN CATALOG some_catalog;
-- Refresh a specific schema
REFRESH FOREIGN SCHEMA some_catalog.some_schema;
-- Refresh a specific table
REFRESH FOREIGN TABLE some_catalog.some_schema.some_table;
Dış şema değişikliklerini ne sıklıkta tahmin ettiğinize bağlı olarak işi düzenli aralıklarla çalışacak şekilde yapılandırın.
Gerçekleştirilmiş görünümlerle yabancı tablolardan veri yükleme
Databricks, gerçekleştirilmiş görünümler oluştururken sorgu federasyonu kullanarak dış verilerin yüklenmesini önerir. Bkz Gerçekleştirilmiş görünümler.
Sorgu federasyonu kullandığınızda, kullanıcılar federasyon verilerine aşağıdaki gibi başvurabilir:
CREATE MATERIALIZED VIEW xyz AS SELECT * FROM federated_catalog.federated_schema.federated_table;
Sistem tarafından oluşturulan federasyon sorgularını görüntüleme
Sorgu federasyonu, Databricks SQL deyimlerini federasyon veri kaynağına gönderilebilen deyimlere çevirir. Oluşturulan SQL deyimini görüntülemek için, Sorgu Profiligrafik görünümünde yabancı veri kaynağı tarama düğümüne tıklayın veya EXPLAIN FORMATTED SQL deyimini çalıştırın. Kapsam için her veri kaynağının belgelerinin Desteklenen Pushdown İşlemi bölümüne bakın.
Limitations
- Sorgular salt okunur durumdadır. Tek istisna, bir çalışma alanının eski Hive meta veri depolarını (katalog federasyonu) birleştirmek için Lakehouse Federasyonu'nun kullanılmasıdır. Bu senaryoda yabancı tablolar yazılabilir. Bkz. Federasyon Hive meta veri deposundaki yabancı bir kataloğa yazmak ne anlama gelir?.
- Bağlantıların sınırlanması, Databricks SQL eşzamanlı sorgu limiti kullanılarak belirlenir. Bağlantı başına ambarlar arasında bir sınır yoktur. Bkz . Kuyruğa alma ve otomatik ölçeklendirme mantığı.
- Databricks sorgu önbelleği (Sonuç Önbelleği ve Disk Önbelleği) federasyon sorguları için desteklenmez. Bu, parametrenin
use_cached_resultfederasyon kaynaklarına yönelik sorgular için geçerli olmadığı anlamına gelir. - Unity Kataloğu'nda geçersiz adlara sahip tablolar ve şemalar desteklenmez ve yabancı bir katalog oluşturulurken Unity Kataloğu tarafından yoksayılır. Tanımlayıcılar'daki adlandırma kuralları ve sınırlamaları listesine bakın.
- Tablo adları ve şema adları Unity Kataloğu'nda küçük harfe dönüştürülür. Bu durum ad çakışmalarına neden olursa Databricks hangi nesnenin yabancı kataloğa aktarılacağını garanti edemez.
- Başvuruda bulunan her yabancı tablo için Databricks, uzak sistemde bir alt sorgu zamanlayarak bu tablodan bir veri alt kümesi döndürür ve ardından sonucu tek bir akış üzerinden bir Databricks yürütücü görevine döndürür. Sonuç kümesi çok büyükse yürütücüde bellek tükenebilir.
- Ayrılmış erişim modu (eski adıyla tek kullanıcı erişim modu) yalnızca bağlantıya sahip olan kullanıcılar için kullanılabilir.
- Lakehouse Federasyonu, Azure Synapse veya Redshift bağlantıları için büyük/küçük harfe duyarlı tanımlayıcılarla harici tabloları federe edemez.
Kaynak kotaları
Azure Databricks, Unity Catalog'da güvenli hale getirilebilecek tüm nesneler için kaynak kotalarını uygular. Bu kotalar Kaynak sınırları'nda listelenir. Yabancı kataloglar ve içerdikleri tüm nesneler toplam kota kullanımınıza dahil edilir.
Bu kaynak sınırlarını aşmayı düşünüyorsanız Azure Databricks hesap ekibinize başvurun.
Unity Kataloğu kaynak kotaları API'lerini kullanarak kota kullanımınızı izleyebilirsiniz. Bkz Unity Kataloğu kaynak kotalarınızın kullanımını izleyin.