Snowflake üzerinde federasyon sorguları çalıştırma
Bu makalede, Azure Databricks tarafından yönetilmeyen Snowflake verileri üzerinde federasyon sorguları çalıştırmak için Lakehouse Federasyonu'nun nasıl ayarlanacağı açıklanır. Lakehouse Federasyonu hakkında daha fazla bilgi edinmek için bkz . Lakehouse Federasyonu nedir?.
Lakehouse Federation kullanarak Snowflake veritabanınıza bağlanmak için Azure Databricks Unity Kataloğu meta veri deponuzda aşağıdakileri oluşturmanız gerekir:
- Snowflake veritabanınızla bağlantı.
- Unity Kataloğu sorgu söz dizimini ve veri idare araçlarını kullanarak Azure Databricks kullanıcısının veritabanına erişimini yönetebilmeniz için Unity Kataloğu'ndaki Snowflake veritabanınızı yansıtan bir yabancı katalog.
Başlamadan önce
Çalışma alanı gereksinimleri:
- Unity Kataloğu için etkinleştirilen çalışma alanı.
İşlem gereksinimleri:
- İşlem kaynağınızdan hedef veritabanı sistemlerine ağ bağlantısı. Bkz: Lakehouse Federasyonu için Ağ Önerileri.
- Azure Databricks hesaplama, Databricks Runtime 13.3 LTS veya üzerini kullanmalıdır ve Standart veya Özel 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 CONNECTION
ayrıcalığına sahip bir kullanıcı olmanız gerekir. - Yabancı katalog oluşturmak için meta veri deposunda
CREATE CATALOG
iznine sahip olmanız ve bağlantının sahibi olmanız veya bağlantıdaCREATE FOREIGN CATALOG
ayrıcalığına sahip olmanız gerekir.
Aşağıdaki her görev tabanlı bölümde ek izin gereksinimleri belirtilir.
- OAuth kullanarak kimlik doğrulaması yapmayı planlıyorsanız Snowflake konsolunda bir güvenlik tümleştirmesi oluşturun.
- OAuth erişim belirteci kullanarak kimlik doğrulaması yapmayı planlıyorsanız, bir erişim belirteci de istemeniz gerekir.
(İsteğe bağlı) Snowflake konsolunda güvenlik tümleştirmesi oluşturma
OAuth kullanarak kimlik doğrulaması yapmak istiyorsanız, Snowflake bağlantısı oluşturmadan önce bu adımı izleyin. Bunun yerine kullanıcı adı ve parola kullanarak kimlik doğrulaması yapmak için bu bölümü atlayın.
Not
Yalnızca Snowflake'in yerleşik OAuth tümleştirmesi desteklenir. Okta veya Microsoft Entra ID gibi dış OAuth tümleştirmeleri desteklenmez.
Snowflake konsolunda komutunu çalıştırın CREATE SECURITY INTEGRATION
. Aşağıdaki değerleri değiştirin:
<integration-name>
: OAuth entegrasyonunuz için benzersiz bir ad.<workspace-url>
: Azure Databricks çalışma alanı URL'si.OAUTH_REDIRECT_URI
'yıhttps://<workspace-url>/login/oauth/snowflake.html
olarak ayarlamanız gerekir, burada<workspace-url>
Snowflake bağlantısını oluşturacağınız Azure Databricks çalışma alanının benzersiz URL'sidir.<duration-in-seconds>
: Yenileme belirteçleri için bir zaman uzunluğu.Önemli
OAUTH_REFRESH_TOKEN_VALIDITY
varsayılan olarak 90 gün olarak ayarlanmış özel bir alandır. Yenileme belirtecinin süresi dolduktan sonra bağlantının kimliğini yeniden doğrulamanız gerekir. Alanı makul bir süre uzunluğuna ayarlayın.
CREATE SECURITY INTEGRATION <integration-name>
TYPE = oauth
ENABLED = true
OAUTH_CLIENT = custom
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://<workspace-url>/login/oauth/snowflake.html'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = <duration-in-seconds>
OAUTH_ENFORCE_PKCE = TRUE;
(İsteğe bağlı) OAuth erişim belirteci isteme
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.
Not
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,
tıklayın.
Kataloğu bölmesinin üst kısmında Ekle veya artı simgesine tıklayınekle simgesine tıklayın ve menüden Bağlantı ekle seçin. Alternatif olarak,
Hızlı erişim sayfasında Dış veridüğmesine tıklayın, Bağlantılar sekmesine gidin veBağlantı oluştur öğesine tıklayın.Bağlantı temel bilgileri sayfasında, Bağlantı ayarlama sihirbazını açın ve kullanıcı dostu bir Bağlantı adıgirin.
Snowflake bağlantı türünü seçin.
Kimlik Doğrulaması türüiçin, açılan menüden
Username and password
(temel kimlik doğrulaması),OAuth access token
,PEM Private Key
veyaOAuth
seçin.(İsteğe bağlı) Açıklama ekleyin.
İleriöğesine tıklayın.
Snowflake ambarınız için aşağıdaki kimlik doğrulamasını ve bağlantı ayrıntılarını girin. Seçtiğiniz kimlik doğrulama yöntemine özgü özelliklerden önce parantez içindeki
Auth type
eklenir.Konak: Örneğin,
snowflake-demo.east-us-2.azure.snowflakecomputing.com
Bağlantı noktası: Örneğin,
443
Kullanıcı: Örneğin,
snowflake-user
(Temel kimlik doğrulaması) Parola: Örneğin,
password123
(OAuth erişim belirteci) Erişim belirteci: (İsteğe bağlı) Bir OAuth erişim belirteci isteyin.
(OAuth erişim belirteci) Süre sonu saniye cinsinden: Erişim belirtecinin için kalan süre (saniye cinsinden). (İsteğe bağlı) OAuth erişim belirteci isteği yapın (
expires_in
).(OAuth) İstemci Kimliği: Snowflake konsolunda
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')
çalıştırarak güvenlik tümleştirmesinin istemci kimliğini alın.(OAuth) İstemci sırrı: Güvenlik tümleştirmesi için istemci sırrını almak amacıyla Snowflake konsolunda
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')
'yi çalıştırın.(OAuth) OAuth kapsamı:
refresh_token session:role:<role-name>
.<role-name>
içinde kullanılacak Snowflake rolünü belirtin.(OAuth) Snowflakeile oturum açın: OAuth kimlik bilgilerinizi kullanarak Snowflake'e tıklayın ve oturum açın.
(PEM Özel Anahtarı) PEM özel anahtarı: HEX64 biçiminde RSA anahtar çiftinden özel anahtar.
(PEM Özel Anahtar) Saniye İçinde Sona Erecek: Özel anahtarla yapılan bağlantının son kullanım süresi (saniye cinsinden).
Oturum başarıyla açıldıktan sonra, Bağlantı ayarlama sihirbazına geri yönlendirilirsiniz.
Bağlantıoluştur'a tıklayın.
(Temel kimlik doğrulaması) Bağlantı ayrıntıları sayfasında aşağıdakileri belirtin:
-
Kar tanesi ambarı: Örneğin,
my-snowflake-warehouse
- (İsteğe bağlı) Proxy konağı: Snowflake'e bağlanmak için kullanılan proxy'nin ana bilgisayarı. Ayrıca Ara sunucu kullan 'ı seçmeniz ve Proxy bağlantı noktasıbelirtmeniz gerekir.
- (İsteğe bağlı) Ara sunucukullanın: Ara sunucu kullanarak Snowflake'e bağlanılıp bağlanılmayacağı.
- (İsteğe bağlı) Proxy bağlantı noktası: Snowflake'e bağlanmak için kullanılan proxy'nin bağlantı noktası. Ayrıca Ara sunucu kullan'ı seçmeniz ve Ara Sunucu konağıbelirtmeniz gerekir.
- (İsteğe bağlı) Snowflake rolü: Bağlandıktan sonra oturum için kullanılacak varsayılan güvenlik rolü.
-
Kar tanesi ambarı: Örneğin,
İleriöğesine tıklayın.
Katalog Temel Bilgileri sayfasında, yabancı katalog için bir ad girin. Yabancı bir katalog, dış bir veri sistemindeki veritabanını yansıtarak bu veritabanındaki verilere Azure Databricks ve Unity Kataloğu kullanarak sorgulama yapmanıza ve erişimi yönetmenize olanak tanır.
(İsteğe bağlı) Çalıştığını onaylamak için Bağlantıyı test et'e tıklayın.
tıklayın, katalog oluştur.
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ı 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.
Tüm katalog nesnelerine erişimi yönetebilecek Sahibi'i değiştirin. Metin kutusuna bir ana unsur yazmaya başlayın ve çıkan sonuçlardan ana unsura 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 ana unsur yazmaya başlayın ve çıkan sonuçlardan ana unsura 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
BROWSE
verilir.- Katalogdaki nesnelerde
ayrıcalıkları vermek için açılan menüden veri okuyucu seçin. - Katalogdaki nesnelerde ve
read
ayrıcalıkları vermek için açılan menüdenmodify
seçin. - Vermek istediğiniz ayrıcalıkları el ile seçin.
- Katalogdaki nesnelerde
- 'yi onayla'ya tıklayın.
- Katalogdaki nesnelere erişimi olacak
İleriöğesine tıklayın.
Meta Veri sayfasında, etiketlerin 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.
SQL
Aşağıdaki komutu bir not defterinde veya Databricks SQL sorgu düzenleyicisinde çalıştırın.
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
user '<user>',
password '<password>'
);
Kimlik bilgileri gibi hassas değerler için düz metin dizeleri yerine Azure Databricks gizli dizileri kullanmanızı öneririz. Örneğin:
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
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.
Yabancı katalog oluşturma
Önemli Not
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ı bir katalog, dış bir veri sistemindeki veritabanını yansıtarak bu veritabanındaki verilere Azure Databricks ve Unity Kataloğu kullanarak sorgulama yapmanıza ve erişimi yönetmenize olanak tanır. 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:CREATE CATALOG
meta veri deposu üzerindeki izin ve bağlantının sahipliği veya CREATE FOREIGN CATALOG
bağlantı üzerindeki ayrıcalık.
Katalog Tarayıcısı
Azure Databricks çalışma alanınızda, Katalog Gezgini'ni 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. -
<database-name>
: Azure Databricks'te katalog olarak yansıtmak istediğiniz veritabanının adı.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Büyük/küçük harfe duyarlı veritabanı tanımlayıcıları
Yabancı database
kataloğun alanı Snowflake veritabanı tanımlayıcısına eşlenir. Snowflake veritabanı tanımlayıcısı büyük/küçük harfe duyarlı değilse, yabancı katalogda <database-name>
kullandığınız büyük/küçük harf korunur. Ancak Snowflake veritabanı tanımlayıcısı büyük/küçük harfe duyarlıysa, olayı korumak için yabancı kataloğu <database-name>
çift tırnak içine almalısınız.
Örneğin:
database
olarak dönüştürülürDATABASE
"database"
olarak dönüştürülürdatabase
"database"""
olarak dönüştürülürdatabase"
Çift tırnak işaretinden kaçınmak için bir çift tırnak daha kullanın.
"database""
çift tırnak doğru şekilde kaçış olmadığından hatayla sonuçlanır.
Daha fazla bilgi için Snowflake belgelerindeki Tanımlayıcı gereksinimleri bölümüne bakın.
Desteklenen itme işlemleri
Aşağıdaki baskılamalar desteklenir:
- Filtreler
- Projeksiyonlar
- Sınır
- Birleştirmeler
- Toplamalar (Average, Corr, CovPopulation, CovSample, Count, Max, Min, StddevPop, StddevSamp, Sum, VariancePop, VarianceSamp)
- İşlevler (Dize işlevleri, Matematiksel işlevler, Veri, Zaman ve Zaman Damgası işlevleri ve Alias, Cast, SortOrder gibi diğer çeşitli işlevler)
- Windows işlevleri (DenseRank, Rank, RowNumber)
- Sıralama
Veri türü eşlemeleri
Snowflake'ten Spark'a okuma yaptığınızda veri türleri aşağıdaki gibi eşlenir:
Kar tanesi türü | Spark türü |
---|---|
ondalık, sayı, sayısal | Ondalık Türü |
bigint, byteint, int, integer, küçükint, minikint | TamsayıTürü |
float, float4, float8 | FloatType |
çift, çift hassasiyet, gerçek sayı | DoubleType |
char, character, string, text, time, varchar | StringType |
ikili | BinaryType |
boolean | BooleanType |
tarih | TarihTürü |
datetime, timestamp, timestamp_ltz, timestamp_ntz, timestamp_tz | Zaman Damgası Türü |
OAuth sınırlamaları
OAuth destek sınırlamaları şunlardır:
- Snowflake OAuth uç noktasına Databricks denetim düzlemi IP'lerinden erişilebilir olmalıdır. Bkz Azure Databricks denetim düzleminden giden. Snowflake, güvenlik tümleştirme düzeyinde ağ ilkelerini yapılandırmayı destekler, bu da Databricks denetim düzleminden OAuth uç noktasına yetkilendirme için doğrudan bağlantı sağlayan ayrı bir ağ ilkesine olanak tanır.
- Proxy Kullan, Proxy sunucu, Proxy bağlantı noktası ve Snowflake rol yapılandırma seçenekleri desteklenmez. OAuth kapsamının bir parçası olarak Snowflake rolünü belirtin.
PEM özel anahtar sınırlamaları
PEM özel anahtar desteği sınırlamaları şunlardır:
Snowflake JDBC sürücüsü şifrelenmiş özel anahtarlarla kimlik doğrulamayı desteklemez. Hataları önlemek için aşağıdaki gibi
-nocrypt
seçeneği eklenmiş bir anahtar oluşturun:openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
Ek kaynaklar
Snowflake belgelerinde aşağıdaki makalelere bakın: