Megosztás a következőn keresztül:


Ö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, vagy CREATE 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ítania OAUTH_REDIRECT_URIhttps://<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ő

  1. Az Azure Databricks-munkaterületen kattintson Katalógus ikonraKatalógus.

  2. A Katalógus panel tetején kattintson a Hozzáadás ikonravagy 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.

  3. A Kapcsolat alapjai oldalon, a Kapcsolat beállítása varázslóban adjon meg egy felhasználóbarát kapcsolatnevet.

  4. Válassza ki a Snowflake kapcsolattípusát.

  5. 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 Keyvagy OAuth lehetőséget.

  6. (Nem kötelező) Megjegyzés hozzáadása.

  7. Kattintson a Továbbgombra.

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

  9. Kattintson a Kapcsolat létrehozásaelemre.

  10. (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.
  11. Kattintson a Továbbgombra.

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

  13. (Nem kötelező) Kattintson a Kapcsolat tesztelése elemre annak ellenőrzéséhez, hogy működik-e.

  14. Kattintson a Katalógus létrehozásaparancsra.

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

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

  17. Adjon jogosultságokat a katalógushoz. Kattintson a "Engedélyezés"gombra:

    1. 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.
    2. 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 és modify jogosultságokat biztosítson a katalógus objektumaihoz.
      • Jelölje ki manuálisan a megadni kívánt jogosultságokat.
    3. Kattintson a(z) Grant gombra.
  18. Kattintson a Továbbgombra.

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

  20. (Nem kötelező) Megjegyzés hozzáadása.

  21. 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ő

  1. Az Azure Databricks-munkaterületen kattintson Katalógus ikonraKatalógus a Catalog Explorer megnyitásához.

  2. A Katalógus panel tetején kattintson a Add or plus iconHozzá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.

  3. 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ítva DATABASE

  • "database" át van alakítva database

  • "database""" konvertálása database"

    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: