Összevont lekérdezések futtatása a Snowflake-on
Ez a cikk azt ismerteti, hogyan állíthatja be a Lakehouse Federationt összevont lekérdezések futtatására olyan Snowflake-adatokon, amelyeket nem az Azure Databricks kezel. 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 Snowflake-adatbázishoz, az alábbiakat kell létrehoznia az Azure Databricks Unity Catalog metaadattárában:
- Kapcsolat a Snowflake-adatbázissal.
- Egy külföldi katalógus , amely tükrözi a Snowflake-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ók 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 Standard vagy dedikált 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, vagyCREATE FOREIGN CATALOG
jogosultsággal kell rendelkeznie a kapcsolaton.
Az alábbi tevékenységalapú szakaszokban további engedélykövetelmények vannak megadva.
- Ha az OAuth használatával szeretne hitelesítést végezni, hozzon létre egy biztonsági integrációt a Snowflake konzolon.
- Ha OAuth hozzáférési jogkivonat használatával szeretne hitelesítést végezni, hozzáférési jogkivonatot is kell kérnie.
(Nem kötelező) Biztonsági integráció létrehozása a Snowflake konzolon
Ha az OAuth használatával szeretne hitelesíteni, kövesse ezt a lépést a Snowflake-kapcsolat létrehozása előtt. Ha inkább felhasználónévvel és jelszóval szeretne hitelesíteni, hagyja ki ezt a szakaszt.
Feljegyzés
Csak a Snowflake beépített OAuth-integrációja támogatott. Az olyan külső OAuth-integrációk, mint az Okta vagy a Microsoft Entra ID, nem támogatottak.
A Snowflake konzolon futtassa a következőt CREATE SECURITY INTEGRATION
: . Cserélje le a következő értékeket:
<integration-name>
: Az OAuth-integráció egyedi neve.<workspace-url>
: Egy Azure Databricks-munkaterület URL-címe. Az Azure Databricks-munkaterület egyedi URL-címét kell beállítaniaOAUTH_REDIRECT_URI
https://<workspace-url>/login/oauth/snowflake.html
<workspace-url>
, ahol létre fogja hozni a Snowflake-kapcsolatot.<duration-in-seconds>
: A frissítési jogkivonatok időhossza.Fontos
OAUTH_REFRESH_TOKEN_VALIDITY
egy egyéni mező, amely alapértelmezés szerint 90 napra van beállítva. A frissítési jogkivonat lejárata után újra hitelesítenie kell a kapcsolatot. Állítsa be a mezőt ésszerű hosszúságúra.
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;
(Nem kötelező) OAuth hozzáférési jogkivonat kérése
Kövesse Útmutató: OAuth-jogkivonat létrehozása és használata a Snowflake OAuth használatával egyéni ügyfelek számára a Snowflake Tudásbázisban.
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 a POST /api/2.1/unity-catalog/connections és a Unity Catalog parancsokat.
Szükséges engedélyek: Metaadattár-rendszergazda vagy jogosultsággal CREATE CONNECTION
rendelkező felhasználó.
Katalóguskezelő
Az Azure Databricks-munkaterületen kattintson
Katalógus.
A Katalógus panel tetején kattintson a
vagy plusz ikonra, majd válassza a Kapcsolat hozzáadása parancsot 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.
A Kapcsolat alapjai oldalon, a Kapcsolat beállítása varázslóban adjon meg egy felhasználóbarát kapcsolatnevet.
Válassza ki a Snowflake kapcsolattípusát.
A Hitelesítési típusesetén válassza a legördülő menüben a
Username and password
(alapszintű hitelesítés),OAuth access token
,PEM Private Key
vagyOAuth
lehetőséget.(Nem kötelező) Megjegyzés hozzáadása.
Kattintson a Továbbgombra.
Adja meg a Snowflake-raktár következő hitelesítési és kapcsolati adatait. A kiválasztott hitelesítési módszerre jellemző tulajdonságokat zárójelben a
Auth type
előzi meg.Házigazda: Például:
snowflake-demo.east-us-2.azure.snowflakecomputing.com
Port: Például:
443
Felhasználó: Például:
snowflake-user
(Alapszintű hitelesítés) jelszó: Például
password123
(OAuth hozzáférési jogkivonat) Hozzáférési jogkivonat: Ezt a hozzáférési jogkivonatot a (nem kötelező) OAuth hozzáférési jogkivonat kérésére lehet megkapni.
(OAuth hozzáférési jogkivonat) Lejárati idő másodpercben: A hozzáférési jogkivonat lejárati ideje (másodpercben) Opcionálisan kérhető egy OAuth hozzáférési jogkivonat (
expires_in
).(OAuth) ügyfélazonosító: A Snowflake konzolon futtassa a(z)
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')
parancsot a biztonsági integráció ügyfélazonosítójának lekéréséhez.(OAuth) Titkos ügyfélkód: A Snowflake konzolon futtassa
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')
az ügyfél titkos kódjának lekéréséhez a biztonsági integrációhoz.(OAuth) OAuth-hatókör:
refresh_token session:role:<role-name>
. Adja meg a használni kívánt Snowflake szerepkört<role-name>
.(OAuth) Jelentkezzen be a Snowflake: Kattintson és jelentkezzen be a Snowflake-be az OAuth hitelesítő adataival.
(PEM titkos kulcs) PEM titkos kulcs: Privát kulcs az RSA kulcspár HEX64 formátumban.
(PEM titkos kulcs) Másodpercben lejár: A titkos kulccsal létesített kapcsolat lejárati ideje (másodpercben).
A sikeres bejelentkezés után a rendszer visszairányítja a Kapcsolat beállítása varázslóba.
Kattintson a Kapcsolat létrehozásaelemre.
(Alapszintű hitelesítés) A Kapcsolat részletei lapon adja meg a következőket:
-
Hópehelyraktár: Például:
my-snowflake-warehouse
- (Nem kötelező) proxy hoszt: A Snowflake-hez való csatlakozáshoz használt proxy hosztja. Emellett ki kell választania a Proxy használata lehetőséget, és meg kell adnia a Proxy portot.
- (Nem kötelező) Proxyhasználata: Azt jelzi, hogy a Snowflake-hez proxykiszolgálóval csatlakozik-e.
- (Nem kötelező) proxyport: A Snowflake-hez való csatlakozáshoz használt proxy portja. Emellett ki kell jelölnie a Proxy használata lehetőséget, és meg kell adnia a Proxy kiszolgáló.
- (Nem kötelező) Snowflake szerepkör: A csatlakozás után a munkamenethez használni kívánt alapértelmezett biztonsági szerepkör.
-
Hópehelyraktár: Például:
Kattintson a Továbbgombra.
A Katalógus alapjai lapon adja meg az idegen nyelvű 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.
(Nem kötelező) Kattintson a Kapcsolat tesztelése elemre annak ellenőrzéséhez, hogy működik-e.
Kattintson a Katalógus létrehozásaparancsra.
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.
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 szereplőt a szövegmezőbe, majd kattintson a visszaadott eredmények között a szereplőre.
Adjon jogosultságokat a katalógushoz. Kattintson a "Engedélyezés"gombra:
- Adja meg azokat a felelősöket, akik hozzáférhetnek a katalógusban lévő objektumokhoz. Kezdje el beírni a szereplőt a szövegmezőbe, majd kattintson a visszaadott eredmények között a szereplőre.
- Válassza ki a jogosultsági beállításokat, amelyeket az egyes szereplőknek kíván adni. 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
ésmodify
jogosultságokat biztosítson a katalógus objektumaihoz. - Jelölje ki manuálisan a megadni kívánt jogosultságokat.
- A legördülő menüben válassza Adatolvasó lehetőséget, hogy
- Kattintson a(z) Grant gombra.
Kattintson a Továbbgombra.
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.
(Nem kötelező) Megjegyzés hozzáadása.
Kattintson a Mentés gombra.
SQL
Futtassa a következő parancsot egy jegyzetfüzetben vagy a Databricks SQL-lekérdezésszerkesztőben.
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
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 snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
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.
Külföldi 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.
Idegen katalógus létrehozásához használhatja a Catalog Explorert vagy a CREATE FOREIGN CATALOG
SQL-parancsot egy Azure Databricks-jegyzetfüzetben vagy az 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ő
Az Azure Databricks-munkaterületen kattintson
Katalógus a Catalog Explorer megnyitásához.
A Katalógus panel tetején kattintson a
Hozzáadás 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.
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 egy SQL-lekérdezésszerkesztőben. A zárójelekben lévő elemek 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. -
<database-name>
: Annak az adatbázisnak a neve, amelyet katalógusként szeretne tükrözni az Azure Databricksben.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Kis- és nagybetűket megkülönböztető adatbázis-azonosítók
A database
külföldi katalógus mezője a Snowflake adatbázis-azonosítóra leképez. Ha a Snowflake-adatbázis azonosítója nem megkülönbözteti a kis- és nagybetűk megkülönböztetését, a külső katalógusban <database-name>
használt burkolat megmarad. Ha azonban a Snowflake-adatbázis azonosítója megkülönbözteti a kis- és nagybetűket, a kis- és nagybetűk megőrzéséhez a külföldi katalógust <database-name>
dupla idézőjelekbe kell csomagolnia.
Példa:
database
át van alakítvaDATABASE
"database"
át van alakítvadatabase
"database"""
konvertálásadatabase"
A dupla idézőjelek feloldásához használjon egy másik dupla idézőjelet.
"database""
hibát eredményez, mert a kettős idézőjel nincs megfelelően escape-elve.
További információ: Azonosítókövetelmények a Snowflake dokumentációjában.
Támogatott leküldések
A következő veremtöltések támogatottak:
- Szűrők
- Projekciók
- Limit
- Összekapcsolások
- Összesítések (Átlag, Corr, CovPopulation, CovSample, Count, Max, Min, StddevPop, StddevSamp, Sum, VariancePop, VarianceSamp)
- Függvények (sztringfüggvények, matematikai függvények, adatok, idő- és időbélyegfüggvények és egyéb egyéb függvények, például Alias, Cast, SortOrder)
- Windows-függvények (DenseRank, Rank, RowNumber)
- Rendezés
Adattípus-leképezések
Ha a Snowflake-ből a Sparkba olvas, az adattípusok az alábbiak szerint lesznek megfeleltetve:
Hópehely típusa | Spark-típus |
---|---|
decimális, szám, numerikus | Decimális típus |
bigint, bájt, int, egész szám, smallint, tinyint | Egész számtípus |
float, float4, float8 | LebegőpontosTípus |
dupla, dupla pontosság, valós | DoubleType |
karakter, karakter, sztring, szöveg, idő, varchar | StringType |
bináris | BinárisTípus |
Logikai típus | Logikai típus |
dátum: | DátumTípus |
datetime, timestamp, timestamp_ltz, timestamp_ntz, timestamp_tz | Időbélyegtípus |
OAuth-korlátozások
Az OAuth támogatási korlátozásai a következők:
- A Snowflake OAuth végpontnak elérhetőnek kell lennie a Databricks vezérlősík IP-címéről. Lásd: Kimenő forgalom az Azure Databricks vezérlősíkjáról. A Snowflake támogatja a hálózati szabályzatok biztonsági integrációs szinten történő konfigurálását, amely lehetővé teszi egy külön hálózati szabályzat létrehozását, amely lehetővé teszi a Databricks vezérlősík és az OAuth-végpont közötti közvetlen kapcsolatot engedélyezés céljából.
- Proxy használata, Proxy gazdagép, Proxy port és a Snowflake szerepkör konfigurációs beállításai nem támogatottak. Adja meg a Snowflake szerepkört az OAuth-hatókör részeként.
A PEM titkos kulcsra vonatkozó korlátozásai
A PEM titkos kulcsokra vonatkozó támogatási korlátozásai a következők:
A Snowflake JDBC-illesztő nem támogatja a titkosított titkos kulcsokkal való hitelesítést. A hibák elkerülése érdekében hozzon létre egy kulcsot
-nocrypt
beállítás hozzáadásával, az alábbiak szerint:openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
További erőforrások
Tekintse meg a Snowflake dokumentációjának alábbi cikkeit: