Dela via


Köra federerade frågor på Snowflake (OAuth-åtkomsttoken)

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

Om du vill ansluta till din Snowflake-databas med Lakehouse Federation måste du skapa följande i azure Databricks Unity Catalog-metaarkivet:

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

Den här sidan beskriver hur du kör federerade frågor på Snowflake-data med hjälp av en OAuth-åtkomsttoken. Andra autentiseringsmetoder finns på följande sidor:

Du kan köra federerade frågor på Snowflake med hjälp av frågefederation eller katalogfederation.

I frågefederation skickar JDBC Unity Catalog-frågan till den externa databasen. Detta är idealiskt för rapportering på begäran eller koncepttestarbete på dina ETL-pipelines.

I katalogfederation körs Unity Catalog-frågan direkt mot fillagring. Den här metoden är användbar för inkrementell migrering utan kodanpassning eller som en mer långsiktig hybridmodell för organisationer som måste underhålla vissa data i Snowflake tillsammans med sina data som registrerats i Unity Catalog. Se Aktivera Snowflake-katalogfederation.

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 tillståndskrav specificeras i varje uppgiftsbaserad sektion som följer.

Begära en OAuth-åtkomsttoken

Följ Hur du: Genererar och använder en OAuth-token med Snowflake OAuth för anpassade klienter i Snowflake Knowledge Base.

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.

Anmärkning

Du kan även 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: Metastore-admin eller användare med CREATE CONNECTION-behörighet.

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

  2. Längst upp i fönstret Katalog klickar du på ikonen Lägg till eller pluslägg till och väljer Skapa en anslutning på 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. Som Anslutningstyp väljer du Snowflake.

  5. För autentiseringstyp väljer du OAuth Access Token från den nedrullningsbara menyn.

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

  7. Klicka på Nästa.

  8. Ange följande autentiserings- och anslutningsinformation på sidan Autentisering .

    • Värd: Till exempel snowflake-demo.east-us-2.azure.snowflakecomputing.com.
    • Port: Standardvärdet är 443.
    • Användare: Använd ditt personliga Snowflake-användarnamn.
    • Åtkomsttoken: Åtkomsttoken från Begär en OAuth-åtkomsttoken.
    • (Valfritt) Upphör att gälla i sekunder: Förfallotiden (i sekunder) för åtkomsttoken från Begär en OAuth-åtkomsttoken (expires_in).
  9. Klicka på Nästa.

  10. På sidan Anslutningsinformation anger du namnet på ditt Snowflake-lager.

  11. Om du vill använda proxy för att ansluta till Snowflake markerar du rutan Använd proxy och fyller i nödvändig information.

  12. Klicka på Skapa anslutning.

  13. På sidan Grundläggande katalog anger du ett namn för den externa katalogen.

  14. För Databas anger du ett databasnamn i Snowflake. 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.

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

  16. Klicka på Skapa katalog.

  17. 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.

  18. Ä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.

  19. 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.
  20. Klicka på Nästa.

  21. På sidan Metadata anger du taggar nyckel/värde-par. Mer information finns i Tillämpa taggar på skyddsbara objekt i Unity Catalog.

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

  23. Klicka på Spara.

Skiftlägeskänsliga databasidentifierare

Fältet database i den externa katalogen mappar till en Snowflake-databasidentifierare. Om Snowflake-databasidentifieraren inte är skiftlägeskänslig bevaras det hölje som du använder i den externa katalogen <database-name>. Men om Snowflake-databasidentifieraren är skiftlägeskänslig måste du omsluta den utländska katalogen <database-name> med dubbla citattecken så att skiftläget bevaras.

Till exempel:

  • database konverteras till DATABASE

  • "database" konverteras till database

  • "database""" konverteras till database"

    För att undvika ett dubbelt citattecken, använd ett annat dubbelt citattecken.

  • "database"" resulterar i ett fel eftersom det dubbla citattecknet inte är korrekt escapet.

Mer information finns i Identifierarkrav i Snowflake-dokumentationen.

Pushdowns som stöds

Följande nedtryckningar stöds:

  • Filterar
  • Prognoser
  • Begränsning
  • Ansluter sig
  • Aggregat (Medelvärde, Korrel, KovariansPop, KovariansSamp, Antal, Max, Min, StdavvikelsePop, StdavvikelseSamp, Summa, VariansPop, VariansSamp)
  • Funktioner (strängfunktioner, matematiska funktioner, data- och tids- och tidsstämpelfunktioner, och andra olika funktioner, till exempel Alias, Cast, SortOrder)
  • Windows-funktioner (DenseRank, Rank, RowNumber)
  • Sortering

Datatypsmappningar

När du läser från Snowflake till Spark mappar datatyper enligt följande:

Snöflingetyp Sparktyp
decimal, nummer, siffra Decimaltyp
bigint, byteint, int, heltal, smallint, tinyint IntegerType
float, float4, float8 Flyttalstyp
dubbel, dubbelprecision, reell DubbelTyp
char, tecken, sträng, text, tid, varchar strängtyp
binär Binärtyp
booleskt Booleskt Datatyp
datum Datumtyp
datum och tid, tidsstämpel, timestamp_ltz, timestamp_ntz, timestamp_tz Tidsstämpeltyp

Begränsningar

  • Snowflake OAuth-slutpunkten måste vara tillgänglig från Databricks-kontrollplanets IP-adresser. Se Utgående IP-adresser från Azure Databricks-kontrollplanet. Snowflake stöder konfiguration av nätverksprinciper på säkerhetsintegreringsnivå, vilket möjliggör en separat nätverksprincip som möjliggör direkt anslutning från Databricks-kontrollplanet till OAuth-slutpunkten för auktorisering.
  • Använd proxy, Proxyvärd, Proxyport och konfigurationsalternativen för Snowflake-roll stöds inte. Ange Snowflake-rollen som en del av OAuth-omfånget.

Ytterligare resurser

Se följande artiklar i Snowflake-dokumentationen: