Megosztás a következőn keresztül:


Összevont lekérdezések futtatása a MySQL-en

Ez a cikk azt ismerteti, hogyan állíthatja be a Lakehouse Federationt összevont lekérdezések futtatására az Azure Databricks által nem kezelt MySQL-adatokon. Ha többet szeretne megtudni a Lakehouse Federation-ről, olvassa el a Mi az a Lakehouse Federation?

Ha a Lakehouse Federation használatával szeretne csatlakozni a MySQL-adatbázishoz, az alábbiakat kell létrehoznia az Azure Databricks Unity Catalog metaadattárában:

  • Kapcsolat a MySQL-adatbázissal.
  • Egy idegen katalógus, amely tükrözi a MySQL-adatbázist a Unity Catalogban, így a Unity Catalog lekérdezési szintaxisával és adatszabályozási eszközeivel kezelheti az Azure Databricks felhasználói hozzáférését az adatbázishoz.

Mielőtt elkezdené

Munkaterületre vonatkozó követelmények:

  • A Unity Cataloghoz engedélyezett munkaterület.

Számítási követelmények:

  • Hálózati kapcsolat a számítási erőforrás és a céladatbázis-rendszerek között. Lásd a Lakehouse Federation hálózatkezelési ajánlásait.
  • Az Azure Databricks compute-nek a Databricks Runtime 13.3 LTS vagy újabb verzióját kell használnia, és megosztott vagy egyfelhasználós hozzáférési módot.
  • Az SQL-raktáraknak pro- vagy kiszolgáló nélkülinek kell lenniük, és a 2023.40-et vagy újabb verziót kell használniuk.

Szükséges engedélyek:

  • Kapcsolat létrehozásához metaadattár-rendszergazdának vagy CREATE CONNECTION jogosultsággal rendelkező felhasználónak kell lennie a munkaterülethez csatolt Unity Catalog metaadattárban.
  • Külföldi katalógus létrehozásához rendelkeznie kell a metaadattár CREATE CATALOG engedélyével, és vagy a kapcsolat tulajdonosának kell lennie, vagy CREATE FOREIGN CATALOG jogosultsággal kell rendelkeznie a kapcsolaton.

Az alábbi tevékenységalapú szakaszokban további engedélykövetelmények vannak megadva.

Kapcsolat létrehozása

A kapcsolat megadja a külső adatbázisrendszer eléréséhez szükséges elérési utat és hitelesítő adatokat. Kapcsolat létrehozásához használhatja a Catalog Explorert vagy a CREATE CONNECTION SQL-parancsot egy Azure Databricks-jegyzetfüzetben vagy a Databricks SQL-lekérdezésszerkesztőben.

Feljegyzés

A Databricks REST API-val vagy a Databricks parancssori felülettel is létrehozhat kapcsolatot. Lásd: POST /api/2.1/unity-catalog/connections és Unity Catalog-parancsok.

Szükséges engedélyek: Metaadattár-rendszergazda vagy jogosultsággal CREATE CONNECTION rendelkező felhasználó.

Katalóguskezelő

  1. Az Azure Databricks-munkaterületen kattintson Katalógus ikonraKatalógus.

  2. A Katalógus panel tetején kattintson a ikonrahozzáadás vagy plusz, majd válassza a Kapcsolat hozzáadása lehetőséget a menüből.

    Másik lehetőségként a Gyorselérési lapon kattintson a Külső adatok > gombra, nyissa meg a Kapcsolatok lapot, majd kattintson a Kapcsolat létrehozásagombra.

  3. A Kapcsolat alapjai oldalon a Kapcsolat beállítása varázslóban, adjon meg egy felhasználóbarát kapcsolatnevet.

  4. Válassza ki a MySQL kapcsolattípusát.

  5. (Nem kötelező) Megjegyzés hozzáadása.

  6. Kattintson a Továbbgombra.

  7. A Hitelesítési lapon adja meg a MySQL-példány következő kapcsolati tulajdonságait:

    • Gazdagép: Például: mysql-demo.lb123.us-west-2.rds.amazonaws.com
    • Port: Például: 3306
    • Felhasználó: Például: mysql_user
    • Jelszó: Például: password123
  8. (Nem kötelező): Válassza Megbízhatósági kiszolgáló tanúsítványánaklehetőséget. Ez alapértelmezés szerint nincs bejelölve. Amikor ki van választva, az átviteli réteg az SSL használatával titkosítja a csatornát, és megkerüli a tanúsítványláncot a megbízhatóság ellenőrzéséhez. Hagyja ezt a beállítást az alapértelmezett értékre, hacsak nincs szükség a megbízhatósági ellenőrzés megkerülésére.

  9. Kattints a Kapcsolat létrehozásaelemre.

  10. A Katalógus alapjai lapon adja meg a külföldi katalógus nevét. A külső katalógus egy külső adatrendszer adatbázisát tükrözi, így az Azure Databricks és a Unity Catalog használatával lekérdezheti és kezelheti az adatbázisban lévő adatokhoz való hozzáférést.

  11. (Nem kötelező) Kattintson a Kapcsolat tesztelése elemre annak ellenőrzéséhez, hogy működik-e.

  12. Kattintson Katalógus létrehozásaelemre.

  13. Az Access lapon válassza ki azokat a munkaterületeket, amelyeken a felhasználók hozzáférhetnek a létrehozott katalógushoz. Kiválaszthatja Minden munkaterület rendelkezik hozzáféréssel, vagy kattintson a Hozzárendelés munkaterületekhezelemre, jelölje ki a munkaterületeket, majd kattintson hozzárendelése gombra.

  14. Módosítsa a tulajdonost, aki képes lesz kezelni a katalógus összes objektumához való hozzáférést. Kezdje el beírni a főelemet a szövegmezőbe, majd kattintson a megjelent eredmények között a megfelelő főelemre.

  15. Adjon jogosultságot a katalógusra. Kattintson az engedélyezése gombra:

    1. Adja meg azokat a felelősöket, akik hozzáférhetnek a katalógusban lévő objektumokhoz. Kezdje el beírni a főelemet a szövegmezőbe, majd kattintson a megjelent eredmények között a megfelelő főelemre.
    2. Válassza ki a jogosultsági beállításokat, az egyes tagoknak való engedélyezéshez. Alapértelmezés szerint minden fiókfelhasználó BROWSE kap.
      • A legördülő menüben válassza Adatolvasó lehetőséget, hogy read jogosultságokat biztosítson a katalógus objektumaihoz.
      • A legördülő menüben válassza Adatszerkesztő lehetőséget, hogy read és modify jogosultságokat biztosítson a katalógus objektumaihoz.
      • Jelölje ki manuálisan a megadni kívánt jogosultságokat.
    3. Kattintson a megadása gombra.
  16. Kattintson a Továbbgombra.

  17. A Metaadatok lapon adja meg a címkék kulcs-érték párjait. További információ: Címkék alkalmazása a Unity Catalog biztonságos objektumaira.

  18. (Nem kötelező) Megjegyzés hozzáadása.

  19. Kattintson a Mentésgombra.

SQL

Futtassa a következő parancsot egy jegyzetfüzetben vagy a Databricks SQL-lekérdezésszerkesztőben.

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

Javasoljuk, hogy az Azure Databricks titkos kulcsokat használjon egyszerű szöveges sztringek helyett olyan bizalmas értékekhez, mint a hitelesítő adatok. Példa:

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

Ha egyszerű szöveges sztringeket kell használnia a jegyzetfüzet SQL-parancsaiban, ne csonkolja a sztringet úgy, hogy speciális karaktereket, például $ a következőt \használja. Például: \$

A titkos kódok beállításáról további információt a Titkos kódok kezelése című témakörben talál.

Idegen katalógus létrehozása

Feljegyzés

Ha a felhasználói felülettel hoz létre kapcsolatot az adatforrással, a rendszer külföldi katalóguslétrehozásról is rendelkezik, és kihagyhatja ezt a lépést.

A külső katalógus egy külső adatrendszer adatbázisát tükrözi, így az Azure Databricks és a Unity Catalog használatával lekérdezheti és kezelheti az adatbázisban lévő adatokhoz való hozzáférést. Idegen katalógus létrehozásához a már definiált adatforráshoz való kapcsolatot kell használnia.

Külföldi katalógus létrehozásához használhatja a Catalog Explorert vagy a CREATE FOREIGN CATALOG SQL-parancsot egy Azure Databricks-jegyzetfüzetben vagy a Databricks SQL-lekérdezésszerkesztőben. Katalógus létrehozásához használhatja a Databricks REST API-t vagy a Databricks parancssori felületet is. Lásd POST /api/2.1/unity-catalog/catalogs és Unity Catalog parancsokat.

Szükséges engedélyek:CREATE CATALOG a metaadattár engedélye, illetve a kapcsolat tulajdonjoga vagy a CREATE FOREIGN CATALOG kapcsolat jogosultsága.

Katalóguskezelő

  1. Az Azure Databricks-munkaterületen kattintson Katalógus ikonraKatalógus a Catalog Explorer megnyitásához.

  2. A Katalógus panel tetején kattintson a Hozzáadás vagy plusz ikonra hozzáadása ikonra, majd válassza Katalógus hozzáadása lehetőséget a menüből.

    Másik lehetőségként a Gyorselérési lapon kattintson a Katalógusok gombra, majd a Katalógus létrehozása gombra.

  3. Kövesse az utasításokat a külföldi katalógusok létrehozásához Katalógusok létrehozása.

SQL

Futtassa a következő SQL-parancsot egy jegyzetfüzetben vagy a Databricks SQL-szerkesztőben. A szögletes zárójelek nem kötelezőek. Cserélje le a helyettesítő értékeket.

  • <catalog-name>: A katalógus neve az Azure Databricksben.
  • : Az adatforrást, elérési utat és hozzáférési hitelesítő adatokat megadó kapcsolatobjektum.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;

Támogatott leküldéses leküldések

A következő leküldéses leküldések támogatottak az összes számításhoz:

  • Szűrők
  • Leképezések
  • Határ
  • Függvények: részleges, csak szűrőkifejezésekhez. (Sztringfüggvények, Matematikai függvények, Dátum, Idő és Időbélyeg függvények és egyéb egyéb függvények, például Alias, Cast, SortOrder)

A databricks runtime 13.3 LTS és újabb verziókban, valamint az SQL-raktárakban a következő leküldéses leküldések támogatottak:

  • Összesítések
  • Logikai operátorok
  • A következő matematikai függvények (nem támogatottak, ha az ANSI le van tiltva): +, -, *, %, /
  • Rendezés, ha korlátozással használjuk

A következő leküldéses leküldések nem támogatottak:

  • Összekapcsolások
  • Windows-függvények

Adattípus-leképezések

Amikor a MySQL-ből a Sparkba olvas, az adattípusok az alábbiak szerint lesznek megfeleltetve:

MySQL-típus Spark-típus
bigint (ha nincs aláírva), decimális Decimális típus
tinyint*, int, egész szám, mediumint, smallint Egész számtípus
bigint (ha aláírt) LongType
float FloatType
double DoubleType
karakter, enumeráció, halmaz CharType
varchar VarcharType
json, longtext, mediumtext, text, tinytext StringType
bináris, blob, varbinary, varchar binary BinaryType
bit, logikai Logikai típus
dátum, év DateType
datetime, time, timestamp** TimestampType/TimestampNTZType

* tinyint(1) signed és tinyint(1) unsigned logikai értékként kezelik, és átalakítják BooleanType. Lásd: Összekötő/J-referencia a MySQL dokumentációjában.

** Amikor a MySQL-ből olvas, a MySQL Timestamp a Sparkra TimestampType van leképezve, ha preferTimestampNTZ = false (alapértelmezett). A MySQL Timestamp az if TimestampNTZTypeparancsra preferTimestampNTZ = true van leképezve.