Aracılığıyla paylaş


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

Bu makalede, Azure Databricks tarafından yönetilmeyen MySQL verileri üzerinde federasyon sorguları çalıştırmak için Lakehouse Federasyonu'nun nasıl set açıklanmaktadır. Lakehouse Federasyonu hakkında daha fazla bilgi edinmek için bkz . Lakehouse Federasyonu nedir?.

Lakehouse Federation kullanarak MySQL veritabanınıza bağlanmak için Azure Databricks Unity Catalog meta veri deponuzda aşağıdakileri oluşturmanız gerekir:

  • MySQL veritabanınıza bağlantı.
  • Unity catalog'da MySQL veritabanınızı yansıtan ; böylece Unity Catalog 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 Catalogiçin çalışma alanı etkinleştirildi.

İş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ı 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 CREATE CONNECTION meta veri deposunda Catalog ayrıcalığına sahip bir kullanıcı olmanız gerekir.
  • Yabancı catalogoluş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.

Aşağıdaki her görev tabanlı bölümde ek izin gereksinimleri belirtilir.

Bağlantı oluşturma

Bağlantı, dış veritabanı sistemine erişmek için bir yol ve credentials belirtir. Bağlantı oluşturmak için Azure Databricks not defterinde veya Databricks SQL sorgu düzenleyicisinde Catalog 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ı.

Catalog Gezgini

  1. Azure Databricks çalışma alanınızda simgesine tıklayın.

  2. bölmesinin üst kısmında Ekle veya artı simgesine tıklayın ekle simgesine tıklayın ve menüden Bağlantı ekle'yi .

    Alternatif olarak, Hızlı erişim sayfasında Dış veri düğmesine tıklayın, sekmesine gidin ve Bağlantı oluşturöğesine tıklayın.

  3. bağlantı sihirbazının Bağlantı temel bilgileri sayfasında,kullanıcı dostu bir Bağlantı adı girin.

  4. MySQL'in Select.

  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ı): SelectGüven sunucusu sertifikası. 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ıza gerek olmadıkça bu set'ı varsayılan olarak bırakın.

  9. Bağlantıoluştur'a tıklayın.

  10. Catalog temel bilgiler sayfasında, yabancı catalogiçin bir ad girin. Yabancı catalog, Azure Databricks ve Unity Catalogkullanarak bu veritabanındaki verileri sorgulayıp yönetebilmeniz için bir dış veri sistemindeki veritabanını yansıtır.

  11. (İsteğe bağlı) Çalıştığını onaylamak için Bağlantıyı test et'e tıklayın.

  12. catalogOluştur 'u tıklayın.

  13. Access sayfasında, oluşturduğunuz select'e kullanıcıların erişebileceği çalışma alanlarını catalog. Bütün çalışma alanlarınınerişimi olabilir veya Çalışma alanlarına ata'yatıklayın, çalışma alanlarını seçin ve ardından Ata'yatıklayın.

  14. içindeki tüm nesnelere erişimi yönetebilecek olan catalog ile değiştirin. Metin kutusuna bir sorumlu yazmaya başlayın ve döndürülen sonuçlarda sorumluya tıklayın.

  15. Grant Ayrıcalıklar catalogüzerinde. Grantöğesine tıklayın:

    1. nesnelere erişimi olacak catalog belirtin. Metin kutusuna bir sorumlu yazmaya başlayın ve döndürülen sonuçlarda sorumluya tıklayın.
    2. Select'den 'e kadar grant. Tüm hesap kullanıcılarına varsayılan olarak BROWSE verilir.
      • Select Veri Okuyucusu açılan menüden grantnesnelerdeki readcatalog ayrıcalıklarına geçin.
      • Select .
      • selectayrıcalıklarını el ile grant.
    3. Grantöğesine tıklayın.
  16. Tıklayın İleri.

  17. Meta Veri sayfasında, anahtar-değer çiftleri olarak etiketleri belirtin. Daha fazla bilgi için bkz. Unity'ye etiket uygulama Catalog güvenli hale getirilebilen nesneler.

  18. (İsteğe bağlı) Açıklama ekleyin.

  19. 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>'
);

gibi hassas values için düz metin dizeleri yerine Azure Databricks credentials 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>')
)

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 dizileri ayarlama hakkında bilgi için bkz . Gizli dizi yönetimi.

Yabancı catalog oluştur

Not

Kullanıcı arabirimini veri kaynağına bağlantı oluşturmak için kullanırsanız, yabancı catalog oluşturma süreci otomatik olarak dahil edilir ve bu adımı atlayabilirsiniz.

Yabancı catalog, Azure Databricks ve Unity Catalogkullanarak bu veritabanındaki verileri sorgulayıp yönetebilmeniz için bir dış veri sistemindeki veritabanını yansıtır. Yabancı bir catalogoluşturmak için, önceden tanımlanmış olan veri kaynağına bir bağlantı kullanırsınız.

Yabancı bir catalogoluşturmak için, Azure Databricks not defterinde veya Databricks SQL sorgu düzenleyicisinde Catalog Gezgini'ni veya CREATE FOREIGN CATALOG SQL komutunu kullanabilirsiniz. catalogoluş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.

Catalog Gezgini

  1. Azure Databricks çalışma alanınızda Gezgini' açmak için simgesine tıklayın.

  2. bölmesinin üst kısmında Ekle veya artı simgesine tıklayın ekle simgesine tıklayın ve menüden ekle'yi .

    Alternatif olarak, Hızlı erişim sayfasında Catalogs düğmesine tıklayın ve ardından catalog oluştur düğmesine tıklayın.

  3. catalogsiçin yabancı catalogs oluşturma yönergelerini izleyin.

SQL

Aşağıdaki SQL komutunu bir not defterinde veya Databricks SQL düzenleyicisinde çalıştırın. Köşeli ayraç içindeki öğeler isteğe bağlıdır. Yer tutucu values'ı değiştirin.

  • <catalog-name>: Azure Databricks'teki catalog adı.
  • <connection-name>: veri kaynağını, yolu ve erişimi belirten credentials.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;

Desteklenen gönderimler

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

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

Aşağıdaki gönderimler Databricks Runtime 13.3 LTS ve üzeri ile SQL ambarlarında desteklenir:

  • Toplamlar
  • Boole işleçleri
  • Aşağıdaki matematiksel işlevler (ANSI devre dışı bırakıldıysa desteklenmez): +, -, *, %, /
  • Sıralama, limit ile kullanıldığında

Aşağıdaki gönderimler desteklenmez:

  • Birleştirmeler
  • Windows işlevleri

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), ondalık Ondalık Türü
tinyint*, int, integer, mediumint, smallint IntegerType
bigint (imzalıysa) LongType
kayan noktalı sayı FloatType
çift DoubleType
char, enum, set CharType
varchar VarcharType
json, longtext, mediumtext, text, tinytext StringType
ikili, blob, varbinary, varchar ikili BinaryType
bit, boole BooleanType
tarih, yıl DateType
datetime, time, timestamp** TimestampType/TimestampNTZType

* tinyint(1) signed boole tinyint(1) unsigned olarak kabul edilir ve içine BooleanTypedönüştürülür. MySQL belgelerinde Bağlayıcı/J Başvurusu'na bakın.

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