Amazon Redshift'te federasyon sorguları çalıştırma
Bu makalede, Azure Databricks tarafından yönetilmeyen Amazon Redshift verilerinde 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 Amazon Redshift veritabanında çalıştır sorgularınıza bağlanmak için Azure Databricks Unity Kataloğu meta veri deponuzda aşağıdakileri oluşturmanız gerekir:
- Amazon Redshift veritabanında sorgu çalıştırma bağlantınız.
- Unity Kataloğu'nda Azure Databricks kullanıcılarının Amazon Redshift veritabanına erişimini yönetebilmesi için çalıştırdığınız sorguları yansıtan dış bir katalog; böylece Unity Kataloğu sorgu işlevlerini ve veri yönetim araçlarını kullanabilirsiniz.
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 işlem, Databricks Runtime 13.3 LTS veya üzerini kullanmalı ve Paylaşılan veya Tek kullanıcı 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.
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 Gezgini
Azure Databricks çalışma alanınızda
Katalogüzerine 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ı ayarlama sihirbazınınBağlantı ayrıntıları sayfasında,kullanıcı dostu birBağlantı adı girin. Redshiftiçin Bağlantı türü seçin.
(İsteğe bağlı) Açıklama ekleyin.
Sonrakiöğesine tıklayın.
Kimlik Doğrulaması sayfasında, Redshift örneğinin aşağıdaki bağlantı özelliklerini girin.
-
Konak: Örneğin,
redshift-demo.us-west-2.redshift.amazonaws.com
-
Bağlantı noktası: Örneğin,
5439
-
Kullanıcı: Örneğin,
redshift_user
-
Parola: Örneğin,
password123
-
Konak: Örneğin,
(İsteğe bağlı) SSL ana bilgisayar adı doğrulamayı devre dışı bırakın.
Bağlantıoluştur'a tıklayın.
Katalog Temel Bilgileri sayfasında, yabancı katalog için bir ad girin. Dış katalog, bir dış veri sistemindeki veritabanını yansıtarak, Azure Databricks ve Unity Kataloğu kullanarak bu veritabanındaki verilere erişim sorgulamanızı ve yönetmenizi sağlar.
(İ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ının erişimini seçebilirsiniz veya çalışma alanlarına ata'ya tıklayın, çalışma alanlarını seçin ve ardından ata'ya tıklayın .
Katalogdaki tüm nesnelere erişimi yönetebilecek olan sahipliğini olarak 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ıyın. ver'i 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. - Her bir sorumluya vermek istediğiniz Privilege ön ayarlarını 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
read
vemodify
ayrıcalıkları vermek için açılan menüden Veri Düzenleyicisi 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
Sonrakiöğesine tıklayın.
Meta Veri sayfasında, etiket anahtar-değer çifti belirtin. Daha fazla bilgi için bkz. Unity Kataloğu güvenli hale getirilebilir nesnelere etiket uygulama.
(İsteğe bağlı) Açıklama ekleyin.
Kaydet'
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 redshift
OPTIONS (
host '<hostname>',
port '<port>',
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 redshift
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
Gizli dizileri ayarlama hakkında bilgi için bkz . Gizli dizi yönetimi.
Yabancı katalog oluşturma
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ı katalog, Azure Databricks ve Unity Kataloğu'nu kullanarak bu veritabanındaki verileri sorgulayıp yönetebilmeniz için bir dış veri sistemindeki veritabanını yansıtı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 Gezgini
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>');
Desteklenen gönderimler
Aşağıdaki gönderimler desteklenir:
- Filtreler
- Projeksiyonlar
- Sınır
- Birleştirmeler
- Toplamlar (Average, Count, Max, Min, StddevPop, StddevSamp, Sum, VarianceSamp)
- İşlevler (Dize işlevleri ve Alias, Cast, SortOrder gibi diğer çeşitli işlevler)
- Sıralama
Aşağıdaki gönderimler desteklenmez:
- Windows işlevleri
Veri türü eşlemeleri
Redshift'ten Spark'a okuma yaptığınızda veri türleri aşağıdaki gibi eşlenir:
Redshift türü | Spark türü |
---|---|
sayısal | Ondalık Türü |
int2, int4 | IntegerType |
int8, oid, xid | LongType |
float4 | FloatType |
çift duyarlık, float8, para | DoubleType |
bpchar, char, karakter değişen, ad, süper, metin, tid, varchar | StringType |
bayt, geometri, varbayt | BinaryType |
bit, bool | BooleanType |
tarih | DateType |
tabstime, time, time, time zone ile saat, saat dilimi olmayan saat, saat dilimi ile zaman damgası, zaman damgası, zaman damgası, saat dilimi olmadan zaman damgası* | TimestampType/TimestampNTZType |
*Redshift'ten okuduğunuzda RedshiftTimestamp
, (varsayılan) ise TimestampType
Spark infer_timestamp_ntz_type = false
ile eşlenir. RedshiftTimestamp
, ise TimestampNTZType
ile infer_timestamp_ntz_type = true
eşlenir.