Aracılığıyla paylaş


PostgreSQL'de federasyon sorguları çalıştırma

** Bu sayfada, Azure Databricks tarafından yönetilmeyen PostgreSQL verileri üzerinde sorgular çalıştırmak amacıyla Lakehouse Federasyonu kurulumu yapılarak, federasyon sorgularının nasıl çalıştırılacağı açıklanır. Lakehouse Federasyonu hakkında daha fazla bilgi edinmek için bkz. Lakehouse Federasyonu nedir?

Lakehouse Federation kullanarak PostgreSQL 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 (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):

  • PostgreSQL veritabanınızda sorgular çalıştırmak için bir bağlantı.
  • PostgreSQL veritabanında çalıştırdığınız sorguları Unity Kataloğu'nda yansıtan bir yabancı katalog, böylece veritabanına Azure Databricks kullanıcı erişimini yönetebilmeniz için Unity Kataloğu sorgu söz dizimini ve veri idare araçlarını kullanabilirsiniz.

Başlamadan önce

Ç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ğunun otomatik olarak etkinleştirilmesi.

İş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 ve Standart veya Ayrılmış 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. Unity Kataloğu için otomatik olarak etkinleştirilen çalışma alanlarında, çalışma alanı yöneticileri varsayılan olarak ayrıcalıklara CREATE CONNECTION sahiptir.
  • 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ıda CREATE FOREIGN CATALOG ayrı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ıklara CREATE CATALOG sahiptir.

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ı

  1. Azure Databricks çalışma alanınızda Veri simgesine tıklayın.Katalog'a gidin.
  2. Katalog bölmesinin üst kısmında Ekle veya artı simgesi Ekle simgesine tıklayın ve menüden Bağlantı oluştur'u seçin.
  3. Bağlantı temel bilgileri sayfasında, Bağlantı ayarlama sihirbazı için kullanıcı dostu bir Bağlantı adıgirin.
  4. Bağlantı türüPostgreSQLseçin.
  5. (İsteğe bağlı) Açıklama ekleyin.
  6. Nextöğesine tıklayın.
  7. Kimlik Doğrulaması sayfasında PostgreSQL örneğinin aşağıdaki bağlantı özelliklerini girin.
    • Konak: Örneğin, postgres-demo.lb123.us-west-2.rds.amazonaws.com
    • Bağlantı noktası: Örneğin, 5432
    • Kullanıcı: Örneğin, postgres_user
    • Parola: Örneğin, password123
  8. Bağlantıoluştur'a tıklayın.
  9. Katalog Temelleri sayfasında, yabancı katalog için bir ad girin. Veritabanındaki verileri Azure Databricks ve Unity Kataloğu'nu kullanarak sorgulayıp yönetebilmeniz için yabancı katalog, bir dış veri sistemindeki veritabanını yansıtır.
  10. (İsteğe bağlı) Çalıştığını onaylamak için Bağlantıyı test et'e tıklayın.
  11. Tıklayın Katalog oluştur.
  12. 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.
  13. Katalogdaki tüm nesnelere erişimi yönetebilecek Sahibi değiştirin. Metin kutusuna bir sorumlu yazmaya başlayın ve döndürülen sonuçlarda sorumluya tıklayın.
  14. Katalog üzerinde ayrıcalıklar verme yetkisi tanıyın. İzin Ver'e tıklayın:
    1. Katalogdaki nesnelere erişimi olacak Sorumlularını belirtin. Metin kutusuna bir sorumlu yazmaya başlayın ve döndürülen sonuçlarda sorumluya tıklayın.
    2. İ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üden modify seçin.
      • Vermek istediğiniz ayrıcalıkları el ile seçin.
    3. İzin Ver'e tıklayın.
  15. Nextöğesine tıklayın.
  16. Meta Veri sayfasında etiketlerin anahtar-değer çiftlerini belirtin. Daha fazla bilgi için bkz. Unity Kataloğu güvenli hale getirilebilir nesnelere etiket uygulama.
  17. (İsteğe bağlı) Açıklama ekleyin.
  18. 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 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 gizli dizileri 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>')
)

Gizli bilgileri ayarlama hakkında bilgi için bkz Gizli bilgi 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.

Veritabanındaki verileri Azure Databricks ve Unity Kataloğu'nu kullanarak sorgulayıp yönetebilmeniz için yabancı katalog, 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 Tarayıcısı

  1. Azure Databricks çalışma alanınızda Veri simgesine tıklayın.Katalog gezginini açmak için katalog.

  2. 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 Kataloglar düğmesine tıklayın ve ardından Katalog oluştur düğmesine tıklayın.

  3. 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 baskılar

Aşağıdaki gönderimler tüm hesaplama işlemlerinde desteklenir:

  • Filters
  • Projections
  • Limit
  • İşlevler: kısmi, yalnızca filtre ifadeleri için. (Dize işlevleri, Matematiksel işlevler ve Alias, Cast, SortOrder gibi diğer çeşitli işlevler)

Aşağıdaki pushdown işlemleri Databricks Runtime 13.3 LTS ve üzeri ile SQL veri ambarlarında desteklenir.

  • Aşağıdaki toplama fonksiyonları: MIN, MAX, COUNT, SUM, AVG, VAR_POP, VAR_SAMP, STDDEV_POP, STDDEV_SAMP, GREATEST, LEAST, COVAR_POP, COVAR_SAMP, CORR, REGR_INTERCEPT, REGR_R2, REGR_SLOPE, REGR_SXY
  • Aşağıdaki Boole işlevleri: =, <, <, =>, >=, <=>
  • Aşağıdaki matematiksel işlevler (ANSI devre dışı bırakıldıysa desteklenmez): +, -, *, %, /
  • Çeşitli işleçler | ve~
  • Sıralama, sınır ile kullanıldığında

Aşağıdaki gönderimler desteklenmez:

  • Joins
  • Windows işlevleri

Veri türü eşlemeleri

PostgreSQL'den Spark'a okuma yaptığınızda veri türleri aşağıdaki gibi eşlenir:

PostgreSQL türü Spark türü
numeric DecimalType
int2 ShortType
int4 (imzalı değilse) IntegerType
int8, oid, xid, int4 (işaretliyse) LongType
float4 FloatType
çift duyarlık, float8 DoubleType
char CharType
ad, varchar, tid VarcharType
bpchar, karakter değişken, json, para birimi, nokta, süper, metin StringType
bytea, geometri, varbyte BinaryType
bit, bool BooleanType
date 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
Postgresql dizi türü** ArrayType

*Postgresql'den okuma yaptığınızda, PostgresqlTimestamp (varsayılan olarak) preferTimestampNTZ = false ise SparkTimestampType ile eşlenir. PostgresqlTimestamp, ise TimestampNTZTypeile preferTimestampNTZ = true eşlenir.

Desteklenen dizi türleri sınırlıdır.