Dela via


Köra federerade frågor på MySQL

Den här artikeln beskriver hur du set upp Lakehouse Federation för att köra federerade frågor på MySQL-data som inte hanteras av Azure Databricks. Mer information om Lakehouse Federation finns i Vad är Lakehouse Federation?.

Om du vill ansluta till din MySQL-databas med Lakehouse Federation måste du skapa följande i ditt Azure Databricks Unity-Catalog metaarkiv:

  • En anslutning till MySQL-databasen.
  • En extern catalog som speglar din MySQL-databas i Unity Catalog, så att du kan använda Unity Catalog:s frågesyntax och verktyg för datastyrning för att hantera användaråtkomst till databasen via Azure Databricks.

Innan du börjar

Krav för arbetsyta:

  • Aktiverad arbetsyta för Unity Catalog.

Beräkningskrav:

  • Nätverksanslutning från beräkningsresursen till måldatabassystemen. Se Nätverksrekommendationer för Lakehouse Federation.
  • Azure Databricks-beräkning måste använda Databricks Runtime 13.3 LTS eller senare och Delad eller En användare åtkomstläge.
  • SQL-lager måste vara pro eller serverlösa och måste använda 2023.40 eller senare.

Behörigheter som krävs:

  • Om du vill skapa en anslutning måste du vara metaarkivadministratör eller användare med CREATE CONNECTION behörighet på Unity Catalog metaarkiv som är kopplat till arbetsytan.
  • Om du vill skapa en extern catalogmåste du ha CREATE CATALOG behörighet i metaarkivet och antingen vara ägare till anslutningen eller ha CREATE FOREIGN CATALOG behörighet för anslutningen.

Ytterligare behörighetskrav anges i varje aktivitetsbaserat avsnitt som följer.

Skapa en anslutning

En anslutning anger en sökväg och credentials för åtkomst till ett externt databassystem. Om du vill skapa en anslutning kan du använda Catalog Explorer eller kommandot CREATE CONNECTION SQL i en Azure Databricks-notebook-fil eller Databricks SQL-frågeredigeraren.

Kommentar

Du kan också använda Databricks REST API eller Databricks CLI för att skapa en anslutning. Se kommandona POST /api/2.1/unity-catalog/connections och Unity Catalog.

Behörigheter som krävs: Metaarkivadministratör eller användare med behörighet.CREATE CONNECTION

Catalog Utforskare

  1. På din Azure Databricks-arbetsyta klickar du på ikonen CatalogCatalog.

  2. Längst upp i fönstret Catalog klickar du på ikonen Lägg till eller plusIkonen Lägg till och selectLägg till en anslutning från menyn.

    Från sidan Snabbåtkomst klickar du på knappen Externa data >, går till fliken Connections och klickar på Skapa anslutning.

  3. Ange ett användarvänligt Anslutningsnamnpå sidan Anslutningsgrunder i guiden Set uppkoppling.

  4. Select en Anslutningstyp av MySQL.

  5. (Valfritt) Lägg till en kommentar.

  6. Klicka på Nästa.

  7. På sidan Authentication anger du följande anslutningsegenskaper för din MySQL-instans:

    • Värd: Till exempel mysql-demo.lb123.us-west-2.rds.amazonaws.com
    • Port: Till exempel 3306
    • Användare: Till exempel mysql_user
    • Lösenord: Till exempel password123
  8. (Valfritt): SelectFörtroendeservercertifikat. Detta avmarkeras som standard. När du väljer det här alternativet använder transportlagret SSL för att kryptera kanalen och kringgår certifikatkedjan för att verifiera förtroendet. Låt den här set vara standard om du inte har ett specifikt behov av att kringgå förtroendevalidering.

  9. Klicka på Skapa anslutning.

  10. På sidan grundläggande Catalog anger du ett namn för den externa catalog. En extern catalog speglar en databas i ett externt datasystem så att du kan fråga och hantera åtkomst till data i databasen med hjälp av Azure Databricks och Unity Catalog.

  11. (Valfritt) Klicka på Testa anslutning för att bekräfta att den fungerar.

  12. Klicka på Skapa catalog.

  13. På sidan Accessselect de arbetsytor där användarna kan komma åt catalog du skapade. Du kan selectge alla arbetsytor åtkomst, eller klicka på Tilldela till arbetsytor, select arbetsytorna och sedan klicka på Tilldela.

  14. Byt ägare för som kommer att kunna hantera åtkomst till alla objekt i catalog. Börja skriva en princip i textrutan och klicka sedan på principen i de returnerade resultaten.

  15. Grant Privileges på catalog. Klicka på Grant:

    1. Ange principals som ska ha åtkomst till objekt i catalog. Börja skriva en princip i textrutan och klicka sedan på principen i de returnerade resultaten.
    2. Select förinställningar för privilegier tilldela grant till varje huvudansvarig. Alla kontoanvändare beviljas BROWSE som standard.
      • Select Data Reader från den nedrullningsbara meny för att hantera grantread behörigheter på objekt i catalog.
      • Select dataredigeraren från den nedrullningsbara menyn för att grantread och modify behörigheter för objekt i catalog.
      • select manuellt behörigheterna för att grant.
    3. Klicka på Grant.
  16. Klicka på Nästa.

  17. På sidan metadata anger du taggar för nyckel/värde-par. Mer information finns i Tillämpa taggar på Unity Catalog skyddsbara objekt.

  18. (Valfritt) Lägg till en kommentar.

  19. Klicka på Spara.

SQL

Kör följande kommando i en notebook-fil eller Databricks SQL-frågeredigeraren.

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

Vi rekommenderar att du använder Azure Databricks hemliga data istället för textsträngar för känslig information values så som credentials. Till exempel:

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

Om du måste använda oformaterade strängar i SQL-kommandon för notebook-filer bör du undvika att trunkera strängen genom att undvika specialtecken som $ med \. Exempel: \$.

Information om hur du konfigurerar hemligheter finns i Hemlighetshantering.

Skapa en utländsk catalog

Kommentar

Om du använder användargränssnittet för att skapa en anslutning till datakällan inkluderas skapandet av extern catalog och du kan hoppa över det här steget.

En extern catalog speglar en databas i ett externt datasystem så att du kan fråga och hantera åtkomst till data i databasen med hjälp av Azure Databricks och Unity Catalog. Om du vill skapa en utländsk cataloganvänder du en anslutning till datakällan som redan har definierats.

Om du vill skapa en främmande catalogkan du använda Catalog Explorer eller kommandot CREATE FOREIGN CATALOG SQL i en Azure Databricks-notebook, eller i Databricks SQL-frågeredigeraren. Du kan också använda Databricks REST API eller Databricks CLI för att skapa en catalog. Se kommandona POST /api/2.1/unity-catalog/catalogs och Unity Catalog.

Behörigheter som krävs:CREATE CATALOG behörighet för metaarkivet och antingen ägarskap för anslutningen eller behörigheten CREATE FOREIGN CATALOG för anslutningen.

Catalog Explorer

  1. På din Azure Databricks-arbetsyta klickar du på ikonen CatalogCatalog för att öppna Catalog Explorer.

  2. Längst upp i fönstret Catalog klickar du på ikonen Lägg till eller plusLägg till och selectLägg till en catalog från menyn.

    Alternativt, från sidan Snabbåtkomst, klickar du på knappen Catalogs och sedan på knappen Skapa catalog.

  3. Följ anvisningarna för att skapa externa catalogs i Skapa catalogs.

SQL

Kör följande SQL-kommando i en notebook- eller Databricks SQL-redigerare. Objekt inom hakparenteser är valfria. Ersätt platshållaren values:

  • <catalog-name>: Namn på catalog i Azure Databricks.
  • <connection-name>: Det anslutningsobjektet som anger datakällan, sökvägen och åtkomsten credentials.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;

Pushdowns som stöds

Följande pushdowns stöds för all beräkning:

  • Filter
  • Projektioner
  • Limit
  • Funktioner: partiell, endast för filteruttryck. (Strängfunktioner, matematiska funktioner, datum-, tids- och tidsstämpelfunktioner och andra diverse funktioner, till exempel Alias, Cast, SortOrder)

Följande pushdowns stöds på Databricks Runtime 13.3 LTS och senare och på SQL-lager:

  • Aggregeringar
  • Booleska operatorer
  • Följande matematiska funktioner (stöds inte om ANSI är inaktiverat): +, -, *, %, /
  • Sortering, när den används med limit

Följande pushdowns stöds inte:

  • Kopplingar
  • Windows-funktioner

Datatypsmappningar

När du läser från MySQL till Spark mappar datatyper på följande sätt:

MySQL-typ Spark-typ
bigint (om inte signerad), decimal Decimaltyp
tinyint*, int, heltal, mediumint, smallint IntegerType
bigint (om signerad) LongType
flyttal FloatType
dubbel DoubleType
char, enum, set CharType
varchar VarcharType
json, longtext, mediumtext, text, tinytext StringType
binary, blob, varbinary, varchar binary BinaryType
bit, boolesk BooleanType
datum, år DateType
datetime, tid, tidsstämpel** TidsstämpelTyp/tidsstämpelNTZType

* tinyint(1) signed och tinyint(1) unsigned behandlas som booleska och konverteras till BooleanType. Se Anslutningsapp/J-referens i MySQL-dokumentationen.

** När du läser från MySQL mappas MySQL Timestamp till Spark TimestampType om preferTimestampNTZ = false (standard). MySQL Timestamp mappas till TimestampNTZType om preferTimestampNTZ = true.