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

Bu sayfada, Azure Databricks tarafından yönetilmeyen MySQL 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 MySQL 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):

  • MySQL veritabanınıza bağlantı.
  • Unity Kataloğu'ndaki MySQL veritabanınızı yansıtan bir yabancı katalog ; böylece 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önetebilirsiniz.

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ğ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, 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şturmak için SSL gereklidir.

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ı

  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ını açın ve kullanıcı dostu bir Bağlantı adıgirin.
  4. MySQL bağlantı türünü seçin.
  5. (İsteğe bağlı) Açıklama ekleyin.
  6. Tıklayın İleri.
  7. Kimlik Doğrulaması sayfasında, MySQL örneğinin aşağıdaki bağlantı özelliklerini girin:
    • Konak: Örneğin, mysql-demo.lb123.us-west-2.rds.amazonaws.com
    • Bağlantı noktası: Örneğin, 3306
    • Kullanıcı: Örneğin, mysql_user
    • Parola: Örneğin, password123
  8. (İsteğe bağlı): Sunucu sertifikasına güven'i seçin. Bu seçenek varsayılan olarak seçili değildir. Aktarım katmanı seçildiğinde, kanalı şifrelemek için SSL kullanır ve güveni doğrulamak için sertifika zincirini atlar. Güven doğrulamasını atlamanız gerekmediği sürece bu ayarı varsayılan olarak bırakın.
  9. (İsteğe bağlı) Kullanıcı tarafından sağlanan sunucu sertifikası: MySQL örneğinizin PEM ile kodlanmış genel sertifikası. Bağlantı her zaman SSL ile şifrelenir ve bu sertifika, TLS el sıkışma sırasında sunucunun kimliğini doğrular. Sunucunuz varsayılan güven deposunda olmayan özel veya dahili bir sertifika otoritesinden bir sertifika sunduğunda bunu sağla. Bu, doğrulamayı atlayan Trust sunucu sertifikasını seçmeye alternatif bir yöntemdir. İkiniz de bir sertifika sağlarsanız ve Trust sunucu sertifikasını seçerseniz, verilen sertifika öncelikli olur. 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.
  10. Bağlantıoluştur'a tıklayın.
  11. 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.
  12. (İsteğe bağlı) Çalıştığını onaylamak için Bağlantıyı test et'e tıklayın.
  13. Katalog oluştur'a tıklayın.
  14. Erişim 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.
  15. Katalogdaki tüm nesnelere erişimi yönetebilecek Sahip'i değiştirin. Metin kutusuna bir sorumlu yazmaya başlayın ve döndürülen sonuçlarda sorumluya tıklayın.
  16. Katalogda Ayrıcalıkları tanımlayı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.
  17. Tıklayın İleri.
  18. Meta Veri sayfasında, anahtar-değer çiftleri olarak etiketleri belirtin. Daha fazla bilgi için bkz. Unity Kataloğu'ndaki güvenli nesnelere etiket uygulama.
  19. (İsteğe bağlı) Açıklama ekleyin.
  20. Kaydet'etı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 mysql
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 dizilerini kullanmanızı öneririz. Örneğin:

CREATE CONNECTION <connection-name> TYPE mysql
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

TLS el sıkışma sırasında sunucunun kimliğini doğrulamak için (örneğin, MySQL sunucunuz varsayılan güven deposunda olmayan özel veya dahili bir sertifika otoritesinden bir sertifika sunduğunda), sunucunun PEM kodlu sertifikasını seçenekten userProvidedServerCertificate geçirin. Bağlantı her zaman SSL ile şifrelenir. Bu seçenek, trustServerCertificate için bir alternatiftir ve ona göre önceliklidir.

CREATE CONNECTION <connection-name> TYPE mysql
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>'),
  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 bilgileri ayarlama hakkında bilgi için bkz Gizli bilgi 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ı 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 CREATE FOREIGN CATALOG Databricks SQL sorgu düzenleyicisinde Katalog Gezgini'ni veya 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.

  4. Aşağıdaki katalog seçeneğini de belirtebilirsiniz:

    • TINYINT(1) is bit: MySQL tinyint(1) sütunlarının Spark veri türlerine nasıl eşlendiğini belirten isteğe bağlı bir katalog seçeneği. Daha fazla bilgi için bkz. Veri türü eşlemeleri .

SQL

Aşağıdaki SQL komutunu bir not defterinde veya Databricks SQL düzenleyicisinde ç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'teki kataloğun adı.
  • <connection-name>: Veri kaynağını, yolu ve erişim kimlik bilgilerini belirten bağlantı nesnesi.
  • tinyInt1isBit: MySQL tinyint(1) sütunlarının Spark veri türlerine nasıl eşlendiğini belirten isteğe bağlı bir katalog seçeneği. Daha fazla bilgi için bkz. Veri türü eşlemeleri .
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
[OPTIONS (tinyInt1isBit {'true'|'false'})];

Desteklenen itilimler

MySQL için desteklenen indirgeme işlemleri ve her biri için gereken hesaplama gücü aşağıdaki tabloda listelenmektedir.

İtme Desteklenen hesaplama
Tarih, Saat ve Zaman Damgası işlevleri
(kısmi olarak, sadece filtre ifadeleri)
Desteklenen Tüm hesaplama
Filtreler Desteklenen Tüm hesaplama
Sınır Desteklenen Tüm hesaplama
Matematiksel işlevler
(kısmi olarak, sadece filtre ifadeleri)
Desteklenen Tüm hesaplama
Çeşitli işlevler
(Diğer Ad, Atama, SortOrder; yalnızca kısmi, filtre ifadeleri gibi)
Desteklenen Tüm hesaplama
Ofset baskı Desteklenen Tüm hesaplama
Projeksiyonlar Desteklenen Tüm hesaplama
Dize işlevleri
(kısmi olarak, sadece filtre ifadeleri)
Desteklenen Tüm hesaplama
Toplamlar Desteklenen Tüm hesaplama
Aritmetik operatörler
(+, -, *, %, /; ANSI devre dışı bırakıldıysa desteklenmez)
Desteklenen Tüm hesaplama
Boole işleçleri
(=, <=>, <, <=, >, >= gibi)
Desteklenen Tüm hesaplama
Bit düzeyinde AND işleci
(&)
Desteklenen Tüm hesaplama
Sıralama, sınır ile kullanıldığında Desteklenen Tüm hesaplama
Birleştirmeler Desteklenen Databricks Runtime 17.2 ve üzeri ile SQL ambarı işlem. Bu aşağı itme Genel Önizleme kapsamındadır; Önizlemeler sayfasında Federasyon Sorguları için Birleştirme Aşağı İtme geçişini etkinleştirin.
Windows işlevleri Desteklenmiyor Desteklenmiyor

Veri türü eşlemeleri

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

MySQL türü Spark türü
bigint (imzalı değilse), decimal DecimalType
int, integer, mediumint, smallint IntegerType
tinyint(1) BooleanType/ByteType*
tinyint(>1) ByteType
bigint (imzalanmışsa) LongType
float FloatType
double DoubleType
char, enum, set CharType
varchar VarcharType
json, longtext, mediumtext, text, , tinytext StringType
binary, blob, varbinary, varchar binary BinaryType
bit, boolean BooleanType
date, year DateType
datetime, time, timestamp** TimestampType/TimestampNTZType

* MySQLtinyint(1) signed/unsigned, katalog seçeneği BooleanType (varsayılan) ise Spark tinyInt1isBit = true ile eşlenir. Katalog seçeneği tinyInt1isBit = false ile ByteType eşlenirse.

** MySQL'den okuduğunuzda, MySQL Timestamp varsayılan olarak TimestampType ise Spark preferTimestampNTZ = false'a eşlenir. MySQLTimestamp ise TimestampNTZType ile preferTimestampNTZ = true eşlenir.

Ek kaynaklar