Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 Ansluta till externa databaser och kataloger
Om du vill ansluta till snowflake-databasen med Lakehouse Federation måste du skapa följande i metaarkivet i Azure Databricks Unity Catalog (arbetsytor som skapats efter den 9 november 2023 har redan ett Unity Catalog-metaarkiv etablerat automatiskt):
- 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 Snowflakes inbyggda OAuth-integrering. Andra autentiseringsmetoder finns på följande sidor:
- OAuth med Microsoft Entra-ID
- OAuth med Okta
- OAuth-åtkomsttoken
- PRIVAT PEM-nyckel
- Grundläggande autentisering (användarnamn/lösenord)
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.
Sökfederation
Innan du börjar
Krav för arbetsyta:
- Arbetsytan är aktiverad för Unity Catalog. Arbetsytor som skapats efter den 9 november 2023 aktiveras automatiskt för Unity Catalog, inklusive automatisk metaarkivetablering. Du behöver inte skapa ett metadatalager manuellt, om inte arbetsytan är äldre än den automatiska aktiveringen och inte har aktiverats för Unity Catalog. Se Kom igång med 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 CONNECTIONbehörighet i Unity Catalog-metaarkivet som är kopplat till arbetsytan. I arbetsytor som aktiverades automatiskt för Unity Catalog har arbetsyteadministratörer behörighetenCREATE CONNECTIONsom standard. - Om du vill skapa en extern katalog måste du ha behörigheten
CREATE CATALOGi metaarkivet och antingen vara ägare till anslutningen eller haCREATE FOREIGN CATALOGbehörighet för anslutningen. I arbetsytor som aktiverades automatiskt för Unity Catalog har arbetsyteadministratörer behörighetenCREATE CATALOGsom standard.
Ytterligare behörighetskrav anges i varje aktivitetsbaserat avsnitt som följer.
Skapa en säkerhetsintegrering
Kör CREATE SECURITY INTEGRATION i konsolen för Snowflake. Ersätt följande värden:
<integration-name>: Ett unikt namn för din OAuth-integrering.<workspace-url>: En URL för Azure Databricks-arbetsytan. Du måste angeOAUTH_REDIRECT_URItillhttps://<workspace-url>/login/oauth/snowflake.html, där<workspace-url>är den unika URL:en för Azure Databricks-arbetsytan där du skapar Snowflake-anslutningen.<duration-in-seconds>: En tidsperiod för förnyelse-token.Important
OAUTH_REFRESH_TOKEN_VALIDITYär ett anpassat fält som är inställt på 90 dagar som standard. När uppdateringstoken har upphört att gälla måste du autentisera anslutningen igen. Ange en rimlig tidslängd för fältet.
Till exempel:
CREATE SECURITY INTEGRATION <integration-name>
TYPE = oauth
ENABLED = true
OAUTH_CLIENT = custom
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://<workspace-url>/login/oauth/snowflake.html'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = <duration-in-seconds>
OAUTH_ENFORCE_PKCE = TRUE;
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.
Note
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
På din Azure Databricks-arbetsyta klickar du på
Katalog.
Längst upp i fönstret Katalog klickar du på
lägg till och väljer Skapa en anslutning på menyn.På sidan Anslutningsgrunder i guiden Konfigurera anslutning, ange ett användarvänligt Anslutningsnamn.
Välj en Anslutningstyp för Snowflake.
För autentiseringstyp väljer du
OAuthfrån den nedrullningsbara menyn.(Valfritt) Lägg till en kommentar.
Klicka på Nästa.
Ange följande autentiserings- och anslutningsinformation för ditt Snowflake-lager.
Värd: Till exempel
snowflake-demo.east-us-2.azure.snowflakecomputing.comPort: Till exempel
443Användare: Till exempel
snowflake-userKlient-ID: I Snowflake-konsolen kör du
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')för att hämta klient-ID:t för säkerhetsintegrering.Klienthemlighet: I Snowflake-konsolen kör du
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')för att hämta klienthemligheten för säkerhetsintegrering.OAuth-omfång:
refresh_token session:role:<role-name>. Ange den Snowflake-roll som ska användas i<role-name>.Logga in med Snowflake: Klicka och logga in på Snowflake med dina OAuth-autentiseringsuppgifter.
Vid lyckad inloggning dirigeras du tillbaka till guiden Konfigurera anslutning.
Klicka på Skapa anslutning.
På catalog basics-sidan 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.
(Valfritt) Klicka på Testa anslutning för att bekräfta att den fungerar.
Klicka på Skapa katalog.
På sidan Access väljer du de arbetsytor där användarna kan komma åt katalogen som du skapade. Du kan välja Alla arbetsytor har åtkomsteller klicka på Tilldela till arbetsytor, välj arbetsytor och klicka sedan på Tilldela.
Ändra ägaren för till, som ska kunna hantera åtkomsten till alla objekt i katalogen. Börja skriva en huvudprincip i textrutan och klicka sedan på huvudprincipen i resultaten.
Bevilja privilegier i katalogen. Klicka på Tillåt:
- Ange principals vem som ska ha åtkomst till objekt i katalogen. Börja skriva en huvudprincip i textrutan och klicka sedan på huvudprincipen i resultaten.
- Välj förinställningarna för privilegier som ska beviljas varje huvudaktör . Alla kontoanvändare beviljas
BROWSEsom standard.- Välj dataläsare från den nedrullningsbara menyn för att bevilja
readbehörigheter för objekt i katalogen. - Välj dataredigeraren från den nedrullningsbara menyn för att bevilja
readochmodifybehörigheter för objekt i katalogen. - Välj de behörigheter som ska beviljas manuellt.
- Välj dataläsare från den nedrullningsbara menyn för att bevilja
- Klicka på Tillåt.
Klicka på Nästa.
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.
(Valfritt) Lägg till en kommentar.
Klicka på Spara.
Avancerade anslutningsalternativ
Snowflake-anslutningar stöder följande avancerade alternativ för miljöer med begränsad utgående eller privat anslutning:
-
disableOCSPChecks: Angetrueför att inaktivera kontroller av certifikatåterkallelse via OCSP (Online Certificate Status Protocol) i Snowflake JDBC-drivrutinen. Om du inaktiverar OCSP-kontroller hoppar du över kontrollen av återkallade certifikat.
Important
Tillåt utgående trafik till Snowflake OCSP-svararen när det är möjligt. Lämna disableOCSPChecks oinställd eller ställ in den på false. Ställ in den på true endast om din konfiguration för begränsad utgående trafik eller privat anslutning inte kan tillåta den här trafiken.
Det här alternativet visas inte i Katalogutforskaren. Du kan ange den när du skapar anslutningen till SQL:
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
<connection-options>,
disableOCSPChecks 'true'
);
För en befintlig anslutning använder du ALTER CONNECTION.
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:
databasekonverteras tillDATABASE"database"konverteras tilldatabase"database"""konverteras tilldatabase"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 pushdowns stöds:
- Filters
- Projections
- Limit
- Offset
- Joins
- Aggregat (Medelvärde, Korrel, KovariansPop, KovariansSamp, Antal, Max, Min, StdavvikelsePop, StdavvikelseSamp, Summa, VariansPop, VariansSamp)
- Funktioner (strängfunktioner, matematiska funktioner, datum, tid och tidsstämpelfunktioner och andra diverse funktioner, till exempel Alias, Cast, SortOrder)
- Fönsterfunktioner (DenseRank, Rank, RowNumber)
- Sorting
- Top-N (kombinera sortering och gräns i en enda åtgärd), som stöds i Databricks Runtime 17.3 och senare
Datatypsmappningar
När du läser från Snowflake till Spark mappar datatyper enligt följande:
| Snöflingetyp | Sparktyp |
|---|---|
decimal, , numbernumeric |
DecimalType |
bigint, byteint, int, integer, , , smallinttinyint |
IntegerType |
float, , float4float8 |
FloatType |
double, , double precisionreal |
DoubleType |
char, character, string, text, , , timevarchar |
StringType |
binary |
BinaryType |
boolean |
BooleanType |
date |
DateType |
datetime, timestamp, timestamp_ltz, , , timestamp_ntztimestamp_tz |
TimestampType |
Begränsningar för frågefederation
- Snowflake OAuth-slutpunkten måste vara tillgänglig från Azure 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 Azure 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.
- Utländska tabeller och vyer som innehåller kolumner med Snowflake-specifika datatyper som inte stöds av Unity Catalog, till exempel
VECTOR, kan inte frågas via Lakehouse Federation. Unity Catalog måste lagra metadata för alla kolumner i den externa tabellen, så kolumntyper som inte stöds orsakar felet "Typ som inte stöds" även om frågan inte refererar till dessa kolumner. Om du vill kringgå detta skapar du en Snowflake-vy som exkluderar kolumner som inte stöds och kör frågor mot vyn i stället.
Ytterligare resurser
Se följande artiklar i Snowflake-dokumentationen: