Spouštění federovaných dotazů v MySQL

Tato stránka popisuje, jak nastavit federaci Lakehouse pro spouštění federovaných dotazů na data MySQL, která nespravuje Azure Databricks. Další informace o federaci Lakehouse najdete v tématu Připojení k externím databázím a katalogům.

Pokud se chcete připojit k databázi MySQL pomocí federace Lakehouse, musíte v metastore katalogu Azure Databricks Unity vytvořit následující položky (pracovní prostory vytvořené po 9. listopadu 2023 už mají automaticky zřízené metastore katalogu Unity):

  • Připojení k vaší databázi MySQL.
  • cizí katalog, který zrcadlí databázi MySQL v katalogu Unity Catalog, abyste mohli používat syntaxi dotazů a nástroje pro správu dat v Unity Catalog ke správě uživatelského přístupu k databázi Azure Databricks.

Než začnete

Požadavky na pracovní prostor:

  • Pracovní prostor je zapnutý pro katalog Unity. Pracovní prostory vytvořené po 9. listopadu 2023 jsou pro Unity Catalog automaticky povolené, včetně automatického provisioningu metastoru. Metastore nemusíte vytvářet ručně, pokud váš pracovní prostor pochází z doby před automatickým povolením a nebyl povolen pro Unity Catalog. Viz Začínáme s katalogem Unity.

Požadavky na výpočetní prostředky:

  • Síťové připojení z vašeho výpočetního prostředku k cílovým databázovým systémům. Viz doporučení ohledně sítí pro Lakehouse Federation.
  • Výpočetní prostředky Azure Databricks musí používat Databricks Runtime 13.3 LTS nebo novější a Standard nebo dedikovaný režim přístupu.
  • Sql Warehouse musí být pro nebo bezserverové a musí používat verzi 2023.40 nebo vyšší.

Požadovaná oprávnění:

  • Pokud chcete vytvořit připojení, musíte být správcem metastoru nebo uživatelem s oprávněním CREATE CONNECTION k metastoru katalogu Unity připojenému k pracovnímu prostoru. V pracovních prostorech, které byly automaticky povoleny pro Katalog Unity, mají správci pracovišť CREATE CONNECTION ve výchozím nastavení oprávnění.
  • Chcete-li vytvořit cizí katalog, musíte mít oprávnění CREATE CATALOG k metastoru a být buď vlastníkem připojení, nebo mít oprávnění CREATE FOREIGN CATALOG pro připojení. V pracovních prostorech, které byly automaticky povoleny pro Katalog Unity, mají správci pracovišť CREATE CATALOG ve výchozím nastavení oprávnění.

Další požadavky na oprávnění jsou uvedeny v následující části založené na úlohách.

K vytvoření připojení se vyžaduje protokol SSL.

Vytvoření připojení

Připojení určuje cestu a přihlašovací údaje pro přístup k externímu databázovému systému. K vytvoření připojení můžete použít Průzkumníka katalogu nebo příkaz CREATE CONNECTION SQL v poznámkovém bloku Azure Databricks nebo editoru dotazů SQL Databricks.

Poznámka:

K vytvoření připojení můžete použít také rozhraní REST API Databricks nebo rozhraní příkazového řádku Databricks. Viz POST /api/2.1/unity-catalog/connections a příkazy katalogu Unity.

Požadovaná oprávnění: Správce metastoru nebo uživatel s oprávněním CREATE CONNECTION .

Průzkumník katalogu

  1. V pracovním prostoru Azure Databricks klikněte na ikonu Data.Katalog.
  2. V horní části podokna Katalog klikněte na ikonu Přidat nebo plusPřidat a v nabídce vyberte Vytvořit připojení .
  3. Na stránce Základy připojení v průvodci Nastavení připojení zadejte srozumitelný název připojení.
  4. Vyberte typ připojení MySQL .
  5. (Volitelné) Přidejte komentář.
  6. Klikněte na Další.
  7. Na stránce Ověřování zadejte následující vlastnosti připojení pro vaši instanci MySQL:
    • Hostitel: Příklad: mysql-demo.lb123.us-west-2.rds.amazonaws.com
    • Port: Příklad: 3306
    • Uživatel: Příklad: mysql_user
    • Heslo: Příklad: password123
  8. (Volitelné): Vyberte Důvěřovat certifikátu serveru. Tato možnost je ve výchozím nastavení zrušena. Pokud je tato možnost vybraná, vrstva přenosu používá protokol SSL k šifrování kanálu a obchází řetězec certifikátů k ověření důvěryhodnosti. Ponechte tuto možnost nastavenou na výchozí, pokud nemáte konkrétní potřebu obejít ověření důvěryhodnosti.
  9. Klikněte na Vytvořit připojení.
  10. Na stránce základy katalogu zadejte název cizího katalogu. Cizí katalog zrcadlí databázi v externím datovém systému, abyste mohli dotazovat a spravovat přístup k datům v této databázi pomocí Azure Databricks a Unity Catalog.
  11. (Volitelné) Kliknutím na test připojení potvrďte, že funguje.
  12. Klikněte na Vytvořit katalog.
  13. Na stránce Access vyberte pracovní prostory, ve kterých mají uživatelé přístup k vytvořenému katalogu. Můžete vybrat Všechny pracovní prostory mají přístup, nebo klepněte na Přiřadit k pracovním prostorům, vyberte pracovní prostory a potom klikněte na Přiřadit.
  14. Změňte vlastníka , který bude moci spravovat přístup ke všem objektům v katalogu. Začněte zadávat subjekt do textového pole a potom klikněte na subjekt ve výsledcích.
  15. Udělte oprávnění v katalogu. Klikněte na Udělit:
    1. Specifikujte subjekty , které budou mít přístup k objektům v katalogu. Začněte zadávat subjekt do textového pole a potom klikněte na subjekt ve výsledcích.
    2. Vyberte přednastavení privilegií , které se mají udělit každému hlavnímu objektu. Všichni uživatelé účtu mají ve výchozím nastavení udělené BROWSE.
      • V rozevírací nabídce vyberte Čtečka dat a udělte read oprávnění k objektům v katalogu.
      • V rozevírací nabídce vyberte Datový editor a udělte read a modify oprávnění k objektům v katalogu.
      • Ručně vyberte oprávnění, která chcete udělit.
    3. Klikněte na a udělte.
  16. Klikněte na Další.
  17. Na stránce Metadata zadejte páry klíč-hodnota tagů. Další informace najdete v tématu Použití značek na zabezpečitelné objekty v Katalogu Unity.
  18. (Volitelné) Přidejte komentář.
  19. Klikněte na Uložit.

SQL

V poznámkovém bloku nebo editoru dotazů SQL Databricks spusťte následující příkaz.

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

Doporučujeme používat Azure Databricks tajných kódů místo řetězců prostého textu pro citlivé hodnoty, jako jsou přihlašovací údaje. Příklad:

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>')
)

Pokud je nutné použít řetězce prostého textu v příkazech SQL poznámkového bloku, vyhněte se zkrácení řetězce tím, že se speciálním znakům, jako je $, budete vyhýbat pomocí \. Například: \$.

Informace o nastavení tajných kódů najdete v tématu Správa tajných kódů.

Vytvoření zahraničního katalogu

Poznámka:

Pokud k vytvoření připojení ke zdroji dat použijete uživatelské rozhraní, zahrne se vytvoření cizího katalogu a tento krok můžete přeskočit.

Cizí katalog zrcadlí databázi v externím datovém systému, abyste mohli dotazovat a spravovat přístup k datům v této databázi pomocí Azure Databricks a Unity Catalog. Chcete-li vytvořit cizí katalog, použijete připojení ke zdroji dat, který již byl definován.

K vytvoření cizího katalogu můžete použít Průzkumníka katalogu nebo příkaz CREATE FOREIGN CATALOG SQL v poznámkovém bloku Azure Databricks nebo editoru dotazů SQL Databricks. K vytvoření katalogu můžete použít také rozhraní REST API Databricks nebo rozhraní příkazového řádku Databricks. Viz POST /api/2.1/unity-catalog/catalogs a příkazy katalogu Unity.

Požadovaná oprávnění:CREATE CATALOG oprávnění k metastoru a vlastnictví připojení nebo CREATE FOREIGN CATALOG oprávnění k připojení.

Průzkumník katalogu

  1. V pracovním prostoru Azure Databricks klikněte na ikonu Data. Klikněte na Katalog pro otevření Průzkumníka katalogu.

  2. V horní části podokna katalogu klikněte na ikonu přidat nebo plus Přidat a v nabídce vyberte Přidat katalog.

    Případně na stránce Rychlý přístup klikněte na tlačítko Katalogy a potom klikněte na tlačítko Vytvořit katalog.

  3. Postupujte podle pokynů pro vytváření cizích katalogů v Vytvořit katalogy.

  4. Můžete také zadat následující možnost katalogu:

    • TINYINT(1) is bit: Volitelná možnost katalogu, která určuje, jak se sloupce MySQL tinyint(1) mapují na datové typy Sparku. Další informace najdete v tématu Mapování datových typů .

SQL

V poznámkovém bloku nebo editoru SQL Databricks spusťte následující příkaz SQL. Položky v závorkách jsou volitelné. Nahraďte zástupné hodnoty:

  • <catalog-name>: Název katalogu v Azure Databricks.
  • <connection-name>: Objekt připojení , který určuje zdroj dat, cestu a přihlašovací údaje pro přístup.
  • tinyInt1isBit: Volitelná možnost katalogu, která určuje, jak se sloupce MySQL tinyint(1) mapují na datové typy Sparku. Další informace najdete v tématu Mapování datových typů .
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
[OPTIONS (tinyInt1isBit {'true'|'false'})];

Podporované odsdílení změn

Následující tabulka uvádí pushdown operace podporované pro MySQL spolu s výpočetním výkonem požadovaným pro každou z nich.

Zásobník Podporované výpočetní prostředky
Funkce data, času a časového razítka
(pouze částečné, filtrovací výrazy)
Podporovány Všechny výpočetní prostředky
Filtry Podporovány Všechny výpočetní prostředky
Omezení Podporovány Všechny výpočetní prostředky
Matematické funkce
(pouze částečné, filtrovací výrazy)
Podporovány Všechny výpočetní prostředky
Různé funkce
(například Alias, Cast, SortOrder; částečné, pouze filtrační výrazy)
Podporovány Všechny výpočetní prostředky
Offset Podporovány Všechny výpočetní prostředky
Projekce Podporovány Všechny výpočetní prostředky
Řetězcové funkce
(pouze částečné, filtrovací výrazy)
Podporovány Všechny výpočetní prostředky
Agregáty Podporovány Všechny výpočetní prostředky
Aritmetické operátory
(například +, -, *, %, /; není podporováno, pokud je ANSI zakázáno)
Podporovány Všechny výpočetní prostředky
Logické operátory
(například =, <=>, <, <=, >, >=)
Podporovány Všechny výpočetní prostředky
Bitový operátor AND
(&)
Podporovány Všechny výpočetní prostředky
Řazení při použití s limitem Podporovány Všechny výpočetní prostředky
Slučování Podporováno: Databricks Runtime 17.2 a vyšší verze a výpočetní prostředky SQL Warehouse. Tento posun je ve verzi Public Preview; na stránce Náhledy povolte přepínač Připojit se k nabízeným oznámením pro federované dotazy.
Funkce Systému Windows Nepodporováno Nepodporováno

Mapování datového typu

Při čtení z MySQL do Sparku se datové typy mapuje takto:

Typ MySQL Typ Spark
bigint (pokud není podepsáno), decimal DecimalType
int, integer, , mediumintsmallint IntegerType
tinyint(1) BooleanType/ByteType*
tinyint(>1) ByteType
bigint (pokud je podepsáno) LongType
float FloatType
double DoubleType
char, enum, set CharType
varchar VarcharType
json, longtext, mediumtext, , texttinytext StringType
binary, blob, , varbinaryvarchar binary BinaryType
bit, boolean BooleanType
date, year DateType
datetime, , timetimestamp** TimestampType/TimestampNTZType

* MySQL tinyint(1) signed/unsigned se mapuje na Spark BooleanType, pokud je zvolena možnost katalogu tinyInt1isBit = true (výchozí). Je-li možnost katalogu tinyInt1isBit = false namapována na ByteType.

** Při čtení z MySQL je MySQL Timestamp mapován na Spark TimestampType pokud preferTimestampNTZ = false (výchozí). MySQL Timestamp se mapuje na TimestampNTZType if preferTimestampNTZ = true.

Dodatečné zdroje