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.
Bu sayfada, Azure Databricks tarafından yönetilmeyen Oracle verilerinde federasyon sorguları çalıştırmak için Lakehouse Federasyon'un nasıl ayarlanacağı açıklanır. Lakehouse Federasyonu hakkında daha fazla bilgi edinmek için bkz . Dış veritabanlarına ve kataloglara bağlanma
Lakehouse Federation kullanarak Oracle veritabanınıza bağlanmak için Azure Databricks Unity Kataloğu meta veri deponuzda aşağıdakileri oluşturmanız gerekir (9 Kasım 2023'den sonra oluşturulan çalışma alanlarında zaten otomatik olarak sağlanan bir Unity Kataloğu meta deposu vardır):
- Oracle veritabanınıza bir bağlantısı.
- Unity Kataloğu'nda Oracle veritabanınızı yansıtacak bir yabancı katalog oluşturarak, Unity Kataloğu sorgu söz dizimi ve veri yönetim araçlarını kullanarak Azure Databricks kullanıcılarının veritabanı erişimini yönetebilirsiniz.
Limitations
Lakehouse Federation yalnızca Oracle Cloud'a Aktarım Katmanı Güvenliği (TLS) bağlantılarını destekler. Diğer Oracle veritabanlarına bağlantılar Yerel Ağ Şifrelemesi (NNE) kullanır.
Saat dilimi değeri
Etc/UTColmayan 11.2.0.3.0 ve üzeri örneklere bağlanırken bilinen bir sorun vardır (Hata:ORA-01882: timezone region not found).- Geçici çözüm:
spark.databricks.connector.oracle.timezoneAsRegionöğesinifalseolarak ayarlayın. Bu, doğrudanoracle.jdbc.timezoneAsRegionJDBC sürücü özelliğine karşılık gelir. Klasik işlemde, bu yapılandırmayı küme Spark yapılandırmasında ayarlayabilirsiniz. Databricks SQL ambarlarında ve sunucusuz işlemde bu ayarı uygulamak için Azure Databricks desteğe başvurun.
- Geçici çözüm:
Warning
Geçici çözüm yanlış Yaz Saati (DST) davranışına neden olabilir. Kalıcı bir düzeltme için Oracle veritabanı saat dilimi dosyalarını güncelleştirin. Bkz. Oracle Desteği - ORA-01882.
License
Oracle sürücüsü ve diğer gerekli Oracle jar'ları tıklanmamış FDHUT lisansına tabidir.
Başlamadan önce
Başlamadan önce bu bölümdeki gereksinimleri karşıladığınızdan emin olun.
Databricks 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 Federationiçin
Ağ önerileri. - Azure Databricks işlem, Databricks Runtime 16.1 veya üzerini ve Standart veya Ayrılmış erişim modunu kullanmalıdır.
- SQL ambarları profesyonel veya sunucusuz olmalı ve 2024.50 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.
Oracle gereksinimleri
Yerel Ağ Şifrelemesi kullanan bağlantılar için, sunucu tarafı NNE'yi (ACCEPTED en düşük düzeyde) etkinleştirmeniz gerekir. Oracle belgelerindeki Ağ Veri Şifrelemesi Yapılandırma bölümüne bakın. Bu, bunun yerine TLS kullanan Oracle Cloud bağlantıları için geçerli değildir.
Azure Databricks bağlantısı 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ı.
.
Katalog Tarayıcısı
- Azure Databricks çalışma alanında
Katalog'a gidin.
-
Bağlan'a ve ardından Bağlantılar'a tıklayın.
- Bağlantı oluştur düğmesine tıklayın.
- Bağlantı ayarlama sihirbazının Bağlantı temel bilgileri sayfasında, kullanıcı dostu bir Bağlantı adıgirin.
Bağlantı türü olarakOracle seçin.- (İsteğe bağlı) Açıklama ekleyin.
- Nextöğesine tıklayın.
-
Kimlik Doğrulaması sayfasında Oracle örneği için aşağıdakileri girin:
-
Konak: Örneğin,
oracle-demo.123456.rds.amazonaws.com -
Bağlantı Noktası: Örneğin,
1521 -
Kullanıcı: Örneğin,
oracle_user - parola
: Örneğin, -
Şifreleme protokolü:
Native Network Encryption(varsayılan) veyaTransport Layer Security -
Kullanıcı tarafından sağlanan sunucu sertifikası: İsteğe bağlı. Oracle örneğinizin PEM kodlu halka açık sertifikası, TLS el sıkışması sırasında sunucunun kimliğini doğrulamak için kullanılır. Sunucunuz varsayılan güven deposunda olmayan özel veya dahili bir sertifika otoritesinden bir sertifika sunduğunda bunu sağla. Kullanıcı tarafından sağlanan bir sunucu sertifikası, Lakehouse Federation'ın yalnızca Oracle Cloud bağlantıları için desteklediği bir Şifreleme protokolü gerektirir
Transport Layer Security. Host adı doğrulaması, TLS el sıkışmasının bir parçası olarak gerçekleştirilir: sertifikadaki ana adı istenen ana adıyla eşleşmezse bağlantı başarısız olur.
-
Konak: Örneğin,
- Bağlantıoluştur'a tıklayın.
- Katalog temel bilgileri sayfasında, yabancı katalog için bir ad girin. Harici katalog, bir dış veri sistemindeki veritabanını yansıtarak Azure Databricks ve Unity Kataloğu'nu kullanarak bu veritabanındaki verilere erişimi sorgulamak ve yönetmek için kullanılabilir.
- (İsteğe bağlı) Bağlantı test et'e tıklayarak çalıştığını onaylayın.
- Katalog oluştur'a tıklayın.
- Access sayfasında, kullanıcıların oluşturduğunuz kataloğa erişebileceği çalışma alanlarını seçin. Tüm çalışma alanlarının erişimi var seçeneğini seçebilir veya Çalışma alanlarına ataya tıklayıp, çalışma alanlarını seçtikten sonra Ata'ya tıklayabilirsiniz.
- Katalogdaki tüm nesnelere erişimi yönetebilecek Sahibi değiştirin. Metin kutusuna bir "principal" yazmaya başlayın ve gösterilen sonuçlarda principal'e tıklayın.
- Katalog üzerinde yetkileri tanıyın.
İzin Ver'e tıklayın:
- Katalogdaki nesnelere erişimi olacak
Sorumlularını belirtin. Metin kutusuna bir "principal" yazmaya başlayın ve gösterilen sonuçlarda principal'e tıklayın. - Her bir yetkiliye vermek istediğiniz Privilege ön ayarlarını 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.
- Katalogdaki nesnelere erişimi olacak
- Nextöğesine tıklayın.
- Meta Veri sayfasında etiket anahtar-değer çiftlerini belirtin. Daha fazla bilgi için bkz. Unity Kataloşundaki güvenli hale getirilebilen nesnelere etiket uygulama.
- (İsteğe bağlı) Açıklama ekleyin.
- Kaydet'e tıklayın.
SQL
Not defterinde veya Databricks SQL sorgu düzenleyicisinde aşağıdaki komutu çalıştırın:
CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>',
encryption_protocol '<protocol>' -- optional
);
Databricks, kimlik bilgileri gibi hassas değerler için düz metin dizeleri yerine Azure Databricks gizli dizileri kullanmanızı önerir. Örneğin:
CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>'),
encryption_protocol '<protocol>' -- optional
)
TLS el sıkışması sırasında sunucunun kimliğini doğrulamak için (örneğin, Oracle sunucunuz varsayılan güven deposunda olmayan özel veya dahili bir sertifika otoritesinden bir sertifika sunduğunda), sunucunun PEM kodlu sertifikasını seçeneğe userProvidedServerCertificate verin. Kullanıcı tarafından sağlanan bir sunucu sertifikası, encryption_protocol değerinin TLS olarak ayarlanmasını gerektirir; Lakehouse Federation bunu yalnızca Oracle Cloud bağlantıları için destekler.
CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>'),
encryption_protocol 'TLS',
userProvidedServerCertificate '<pem-encoded-certificate>'
)
Not defteri SQL komutlarında düz metin dizeleri kullanmanız gerekiyorsa, $ile \ gibi özel karakterlerden kaçarak dizeyi kesmekten kaçının. Örneğin: \$.
Gizli anahtarların ayarlanması hakkında bilgi için bkz. Gizli anahtar yönetimi.
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.
Harici katalog, bir dış veri sistemindeki veritabanını yansıtarak Azure Databricks ve Unity Kataloğu'nu kullanarak bu veritabanındaki verilere erişimi sorgulamak ve yönetmek için kullanılabilir. 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. Katalog oluşturmak için Databricks REST API'sini veya Databricks CLI'yi de kullanabilirsiniz. bkz. POST /api/2.1/unity-catalog/catalogs ve Unity Catalog komutları.
Gerekli izinler: Meta veri deposu üzerindeCREATE CATALOG izni ve bağlantının sahipliği veya bağlantı üzerindeki CREATE FOREIGN CATALOG ayrıcalığı.
Katalog Tarayıcısı
Azure Databricks çalışma alanında
Katalog gezginini açmak için katalog.
Kataloğu bölmesinin üst kısmında Ekle veya artısimgesine tıklayın ekle simgesine tıklayın ve menüden Katalog ekle 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
Aşağıdaki SQL komutunu bir not defterinde veya SQL sorgu düzenleyicisinde çalıştırın. Köşeli ayraç içindeki öğeler isteğe bağlıdır. Yer tutucu değerlerini değiştirin:
-
<catalog-name>: Azure Databricks'teki kataloğun adı. -
<connection-name>: Veri kaynağını, yolu ve erişim kimlik bilgilerini belirten bağlantı nesnesi. -
<service-name>: Azure Databricks'te katalog olarak yansıtmak istediğiniz hizmet adı.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (service_name '<service-name>');
Desteklenen baskılar
Aşağıdaki tabloda Oracle için desteklenen itme aşağı işlemleri ve her biri için gerekli olan hesaplama listelenmektedir.
| İtme | Desteklenen hesaplama |
|---|---|
| Aggregates |
|
| Aritmetik operatörler (+, -, *, %, /) gibi— ANSI devre dışı bırakılırsa desteklenmez |
|
| Boole işleçleri (=, <=>, <, <=, >, >= gibi) |
|
| İçerir, Başlar, Biter |
|
| Filters |
|
| Limit |
|
| Matematiksel işlevler (ABS, FLOOR — kısmi destek, yalnızca filtre ifadeleri) |
|
| Çeşitli işlevler (Alias, Dönüştürme, SortOrder gibi — kısmi destek, yalnızca filtre ifadeleri için) |
|
| Offset |
|
| Projections |
|
| Sıralama, sınır ile kullanıldığında |
|
| Dize işlevleri (UPPER, LOWER, CHAR_LENGTH, TRIM, RTRIM, LTRIM, CONCAT, RPAD, LPAD — kısmi destek, yalnızca filtre ifadeleri) |
|
| Joins |
|
| Pencere işlevleri |
|
Veri türü eşlemeleri
Oracle'dan Spark'a okuma yaptığınızda veri türleri aşağıdaki gibi eşlenir:
| Oracle türü | Spark türü |
|---|---|
TIMESTAMP WITH TIMEZONE, TIMESTAMP WITH LOCAL TIMEZONE |
TimestampType |
DATE, TIMESTAMP |
TimestampType/TimestampNTZType* |
NUMBER, FLOAT |
DecimalType** |
BINARY FLOAT |
FloatType |
BINARY DOUBLE |
DoubleType |
CHAR, NCHAR, VARCHAR2, NVARCHAR2 |
StringType |
*
DATEve TIMESTAMP (varsayılan) ise TimestampType Spark spark.sql.timestampType = TIMESTAMP_LTZ ile eşlenir.
TimestampNTZType ise, spark.sql.timestampType = TIMESTAMP_NTZ ile eşlenirler.
**
NUMBER duyarlık belirtilmediğinde, Spark'ta tamamen kayan noktalı bir DecimalType(38, 10) Decimal desteği olmadığından DecimalType(38, 10) ile eşlenir.