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 ayarlanacağı açıklanı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 Kataloğu meta veri deponuzda aşağıdakileri oluşturmanız gerekir:
- 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ı.
İşlem gereksinimleri:
- Databricks Runtime kümenizden veya SQL ambarından hedef veritabanı sistemlerine ağ bağlantısı. Bkz . Lakehouse Federasyonu için ağ önerileri.
- Azure Databricks kümeleri Databricks Runtime 13.3 LTS veya üzerini ve paylaşılan veya tek kullanıcılı erişim modunu kullanmalıdır.
- SQL ambarları Pro veya Sunucusuz olmalıdır 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 ayrıcalığı olan
CREATE CONNECTION
bir kullanıcı olmanız gerekir. - Yabancı katalog oluşturmak için meta veri deposu üzerinde izninizin olması ve bağlantının sahibi olmanız veya bağlantıda ayrıcalığınız olması
CREATE FOREIGN CATALOG
gerekirCREATE CATALOG
.
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 CREATE CONNECTION
Databricks SQL sorgu düzenleyicisinde Katalog Gezgini'ni veya 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'a tıklayın .
Katalog bölmesinin üst kısmında Ekle simgesine tıklayın ve menüden Bağlantı ekle'yi seçin.
Alternatif olarak, Hızlı erişim sayfasında Dış veri >düğmesine tıklayın, Bağlantılar sekmesine gidin ve Bağlantı oluştur'a tıklayın.
Kullanıcı dostu bir Bağlantı adı girin.
MySQL bağlantı türünü seçin.
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
- Konak: Örneğin,
(İsteğe bağlı) Çalıştığını onaylamak için Bağlantıyı test et'e tıklayın.
(İsteğe bağlı) Açıklama ekleyin.
Oluştur’a 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 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>')
)
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ı katalog oluşturma
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 CREATE FOREIGN CATALOG
Databricks SQL sorgu düzenleyicisinde Katalog Gezgini'ni veya SQL komutunu kullanabilirsiniz.
Not
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'a tıklayarak Katalog Gezgini'ne tıklayın.
Katalog bölmesinin üst kısmında Ekle simgesine tıklayın ve menüden Katalog ekle'yi seçin.
Alternatif olarak, Hızlı erişim sayfasında Kataloglar düğmesine ve ardından Katalog oluştur düğmesine tıklayın.
Katalog oluşturma başlığındaki yabancı katalog 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 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 .
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
- Sınır
- İş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, sınır 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 BooleanType
dönüştürülür. MySQL belgelerinde Bağlayıcı/J Başvurusu'na bakın.
** MySQL'den okuduğunuzda, (varsayılan) ise preferTimestampNTZ = false
MySQL Timestamp
Spark'a TimestampType
eşlenir. MySQLTimestamp
, ise preferTimestampNTZ = true
ile TimestampNTZType
eşlenir.