Köra federerade frågor på MySQL

Den här sidan beskriver hur du konfigurerar 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 azure Databricks Unity Catalog-metaarkivet:

  • En anslutning till MySQL-databasen.
  • En utländsk katalog som speglar din MySQL-databas i Unity Catalog så att du kan använda Unity Catalog-frågesyntax och datastyrningsverktyg för att hantera Azure Databricks-användaråtkomst till databasen.

Innan du börjar

Krav för arbetsyta:

  • Arbetsytan är aktiverad 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 standard - eller dedikerat å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 i Unity Catalog-metaarkivet som är kopplat till arbetsytan.
  • Om du vill skapa en extern katalog måste du ha behörigheten CREATE CATALOG 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.

SSL krävs för att skapa en anslutning.

Skapa en anslutning

En anslutning anger en sökväg och autentiseringsuppgifter 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 POST /api/2.1/unity-catalog/connections och Unity Catalog-kommandon.

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

Katalogutforskaren

  1. På din Azure Databricks-arbetsyta klickar du på dataikonen.Katalog.

  2. Längst upp i fönstret Catalog, klicka på ikonen Lägg till eller plusLägg till och välj Lägg till en anslutning från menyn.

    Du kan också klicka på knappen på sidan >, gå till fliken Anslutningar och klicka på Skapa anslutning.

  3. På sidan Anslutningsgrundläggande i Installera anslutningsguiden anger du ett användarvänligt Anslutningsnamn.

  4. Välj en anslutningstyp för 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): Välj Fö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 inställningen vara standard om du inte har ett specifikt behov av att kringgå förtroendevalidering.

  9. Klicka på Skapa anslutning.

  10. På sidan Grundläggande katalog anger du ett namn för den externa katalogen. En extern katalog speglar en databas i ett externt datasystem så att du kan köra frågor mot 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 katalog.

  13. På sidan Åtkomst väljer du de arbetsytor där användarna kan komma åt katalogen som du skapade. Du kan välja Alla arbetsytor har åtkomst eller klicka på Tilldela till arbetsytor, välja arbetsytor och sedan klicka på Tilldela.

  14. Ändra ägaren som ska kunna hantera åtkomsten till alla objekt i katalogen. Börja skriva en princip i textrutan och klicka sedan på principen i de returnerade resultaten.

  15. Bevilja privilegier i katalogen. Klicka på Tillåt:

    1. Ange de huvudnamn som ska ha åtkomst till objekt i katalogen. Börja skriva en princip i textrutan och klicka sedan på principen i de returnerade resultaten.
    2. Välj förinställningarna för privilegier som ska beviljas varje huvudaktör . Alla kontoanvändare beviljas BROWSE som standard.
      • Välj Dataläsare på den nedrullningsbara menyn för att bevilja read behörigheter för objekt i katalogen.
      • Välj Dataredigeraren på den nedrullningsbara menyn för att bevilja read och modify behörigheter för objekt i katalogen.
      • Välj de behörigheter som ska beviljas manuellt.
    3. Klicka på Tillåt.
  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å skyddsbara objekt i Unity Catalog.

  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-hemligheter i stället för klartextsträngar för känsliga värden som autentiseringsuppgifter. 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 katalog

Kommentar

Om du använder användargränssnittet för att skapa en anslutning till datakällan inkluderas skapande av utländsk katalog och du kan hoppa över det här steget.

En extern katalog speglar en databas i ett externt datasystem så att du kan köra frågor mot och hantera åtkomst till data i databasen med hjälp av Azure Databricks och Unity Catalog. För att skapa en extern katalog använder du en anslutning till en datakälla som redan har definierats.

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

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.

Katalogutforskaren

  1. På din Azure Databricks-arbetsyta klickar du på dataikonen.Katalog för att öppna Katalogutforskaren.

  2. Längst upp i fönstret Katalog klickar du på ikonen Lägg till eller pluslägg till och väljer Lägg till en katalog på menyn.

    Du kan också klicka på knappen Kataloger på sidan Snabbåtkomst och sedan på knappen Skapa katalog.

  3. Följ anvisningarna för att skapa utländska kataloger i Skapa kataloger.

SQL

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

  • <catalog-name>: Namn på katalogen i Azure Databricks.
  • <connection-name>: Anslutningsobjektet som anger autentiseringsuppgifterna för datakälla, sökväg och åtkomst.
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
  • Begränsning
  • 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 gräns

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
tinyint(1) Booleskt Datatyp
bigint (om signerad) Långtyp
flyttal Flyttalstyp
dubbel DubbelTyp
char, enum, set Karaktärstyp
Varchar VarcharTyp
json, longtext, mediumtext, text, tinytext strängtyp
Binary, Blob, Varbinary, Varchar Binary Binärtyp
bit, boolesk Booleskt Datatyp
datum, år Datumtyp
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.