Spouštění federovaných dotazů ve Snowflake
Tento článek popisuje, jak nastavit federaci Lakehouse pro spouštění federovaných dotazů na data Snowflake, která nespravuje Azure Databricks. Další informace o federaci Lakehouse najdete v tématu Co je Federace Lakehouse?.
Pokud se chcete připojit k databázi Snowflake pomocí federace Lakehouse, musíte v metastore katalogu Azure Databricks Unity vytvořit následující:
- Připojení k databázi Snowflake.
- Cizí katalog , který zrcadlí databázi Snowflake v katalogu Unity Catalog, abyste mohli použít syntaxi dotazů Unity Catalog a nástroje řízení dat ke správě přístupu uživatelů Azure Databricks k databázi.
Než začnete
Požadavky na pracovní prostor:
- Pracovní prostor aktivován pro katalog Unity.
Požadavky na výpočetní prostředky:
- Síťové připojení z vašeho výpočetního prostředku k cílovým databázovým systémům. Viz síťová doporučení pro Federaci Lakehouse.
- Výpočetní prostředky Azure Databricks musí používat Databricks Runtime 13.3 LTS nebo novější a Standard nebo dedikovaný režim přístupu.
- Sql Warehouse musí být pro nebo bezserverové a musí používat verzi 2023.40 nebo vyšší.
Požadovaná oprávnění:
- Pokud chcete vytvořit připojení, musíte být správcem metastoru nebo uživatelem s oprávněním
CREATE CONNECTION
k metastoru katalogu Unity připojenému k pracovnímu prostoru. - Chcete-li vytvořit cizí katalog, musíte mít oprávnění
CREATE CATALOG
k metastoru a být buď vlastníkem připojení, nebo mít oprávněníCREATE FOREIGN CATALOG
pro připojení.
Další požadavky na oprávnění jsou uvedeny v následující části založené na úlohách.
- Pokud plánujete ověřování pomocí OAuth, vytvořte integraci zabezpečení v konzole Snowflake.
- Pokud plánujete ověření pomocí přístupového tokenu OAuth, musíte také požádat o přístupový token.
(Volitelné) Vytvoření integrace zabezpečení v konzole Snowflake
Pokud chcete provést ověření pomocí OAuth, před vytvořením připojení Snowflake postupujte podle tohoto kroku. Pokud chcete místo toho provést ověření pomocí uživatelského jména a hesla, přeskočte tuto část.
Poznámka:
Podporována je pouze integrovaná OAuth integrace Snowflake. Externí integrace OAuth, jako je Okta nebo Microsoft Entra ID, se nepodporují.
V konzole Snowflake spusťte CREATE SECURITY INTEGRATION
. Nahraďte následující hodnoty:
<integration-name>
: Jedinečný název integrace OAuth.<workspace-url>
: Adresa URL pracovního prostoru Azure Databricks. Musíte nastavitOAUTH_REDIRECT_URI
nahttps://<workspace-url>/login/oauth/snowflake.html
, kde<workspace-url>
je jedinečná adresa URL pracovního prostoru Azure Databricks, kde vytvoříte připojení Snowflake.<duration-in-seconds>
: Doba trvání obnovovacích tokenů.Důležité
OAUTH_REFRESH_TOKEN_VALIDITY
je vlastní pole nastavené ve výchozím nastavení na 90 dnů. Po vypršení platnosti obnovovacího tokenu je nutné připojení znovu ověřit. Nastavte pole na přiměřenou délku času.
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;
(Volitelné) Vyžádání přístupového tokenu OAuth
Postupujte Postupy: Generování a používání tokenu OAuth pomocí Snowflake OAuth pro vlastní klienty ve znalostní bázi Snowflake Knowledge Base.
Vytvoření připojení
Připojení určuje cestu a přihlašovací údaje pro přístup k externímu databázovému systému. K vytvoření připojení můžete použít Průzkumníka katalogu nebo příkaz CREATE CONNECTION
SQL v poznámkovém bloku Azure Databricks nebo editoru dotazů SQL Databricks.
Poznámka:
K vytvoření připojení můžete použít také rozhraní REST API Databricks nebo rozhraní příkazového řádku Databricks. Viz POST /api/2.1/unity-catalog/connections a příkazy Unity Catalog .
Požadovaná oprávnění: Správce metastoru nebo uživatel s oprávněním CREATE CONNECTION
.
Průzkumník katalogu
V pracovním prostoru Azure Databricks klikněte na ikonu Katalog
.
V horní části podokna katalogu klikněte na ikonu
ikona Přidat a v nabídce vyberte možnost Přidat připojení.
Případně na stránce Rychlý přístup klikněte na tlačítko Externí data >, přejděte na kartu Připojení a klikněte na Vytvořit připojení.
Na stránce Základy připojení průvodce nastavením připojení zadejte název připojení, který je uživatelsky přívětivý .
Vyberte typ připojeníSnowflake.
Pro typ ověřovánívyberte
Username and password
(základní ověřování),OAuth access token
,PEM Private Key
neboOAuth
z rozevírací nabídky.(Volitelné) Přidejte komentář.
Klikněte na Další.
Zadejte následující podrobnosti o ověřování a připojení pro váš sklad Snowflake. Vlastnosti specifické pro metodu ověřování, kterou jste vybrali, jsou před
Auth type
v závorkách.Hostitel: Příklad:
snowflake-demo.east-us-2.azure.snowflakecomputing.com
Port: Příklad:
443
Uživatel: Příklad:
snowflake-user
(Základní ověřování) heslo: Například
password123
(přístupový token OAuth) Přístupový token: Přístupový token ze . (Volitelné) Požádejte o přístupový token OAuth.
(Přístupový token OAuth) vyprší v sekundách: Doba vypršení platnosti přístupového tokenu z (volitelné) Vyžádání přístupového tokenu OAuth (
expires_in
).(OAuth) ID klienta: V konzole Snowflake spusťte
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')
a načtěte ID klienta pro integraci zabezpečení.(OAuth) tajný klíč klienta: V konzole Snowflake spusťte
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')
a načtěte tajný klíč klienta pro integraci zabezpečení.(OAuth) rozsah OAuth:
refresh_token session:role:<role-name>
. Zadejte roli Snowflake, která se má použít v<role-name>
.(OAuth) Přihlášení pomocí Snowflake: Klikněte a přihlaste se ke Snowflake pomocí svých přihlašovacích údajů OAuth.
(Privátní klíč PEM) soukromý klíč PEM: Soukromý klíč z páru klíčů RSA ve formátu HEX64.
(Privátní klíč PEM) Vyprší v sekundách: Doba vypršení platnosti (v sekundách) pro připojení vytvořené s privátním klíčem.
Po úspěšném přihlášení jste přesměrováni zpět do průvodce Nastavení připojení.
Klikněte na Vytvořit připojení.
(Základní ověřování) Na stránce Podrobnosti o připojení zadejte následující:
-
Snowflake Warehouse: Například
my-snowflake-warehouse
- (Volitelné) Proxy host: Hostitel proxy serveru používaného k připojení ke Snowflake. Musíte také vybrat Použít proxy a zadat proxy port.
- (Volitelné) Použít proxy: Jestli se chcete připojit ke Snowflake pomocí proxy serveru.
- (Volitelné) proxy port: Port proxy serveru, který se používá pro připojení ke Snowflake. Musíte také vybrat Použít proxy a zadat hostitele proxy.
- (Volitelné) Snowflake role: Výchozí zabezpečovací role, která se má použít pro relaci po připojení.
-
Snowflake Warehouse: Například
Klikněte na Další.
Na stránce základy katalogu zadejte název cizího katalogu. Cizí katalog zrcadlí databázi v externím datovém systému, abyste mohli dotazovat a spravovat přístup k datům v této databázi pomocí Azure Databricks a Unity Catalog.
(Volitelné) Kliknutím na test připojení potvrďte, že funguje.
Klikněte na Vytvořit katalog.
Na stránce Access vyberte pracovní prostory, ve kterých mají uživatelé přístup k vytvořenému katalogu. Můžete vybrat Všechny pracovní prostory mají přístup, nebo klepněte na Přiřadit k pracovním prostorům, vyberte pracovní prostory a potom klikněte na Přiřadit.
Změňte vlastníka , který bude moci spravovat přístup ke všem objektům v katalogu. Začněte psát entitu do textového pole a poté klikněte na entitu ve zobrazených výsledcích.
Udělte privilegia v rámci katalogu. Klikněte na Odsouhlasit:
- Uveďte uživatele Principals, kteří budou mít přístup k objektům v katalogu. Zadejte uživatele nebo skupinu do textového pole a poté klikněte na uživatele nebo skupinu v zobrazených výsledcích.
- Vyberte přednastavení oprávnění k poskytnutí každému subjektu. Všichni uživatelé účtu mají ve výchozím nastavení udělené
BROWSE
.- V rozevírací nabídce vyberte Data Reader a poskytněte
read
oprávnění k objektům v katalogu. - Z rozbalovacího menu vyberte Datový editor, abyste udělili
read
amodify
oprávnění k objektům v katalogu. - Ručně vyberte oprávnění, která chcete udělit.
- V rozevírací nabídce vyberte Data Reader a poskytněte
- Klikněte na Povolit.
Klikněte na Další.
Na stránce Metadata zadejte páry klíč-hodnota tagů. Další informace najdete v tématu Označení zabezpečitelných objektů v Unity Catalogu.
(Volitelné) Přidejte komentář.
Klikněte na Uložit.
SQL
V poznámkovém bloku nebo editoru dotazů SQL Databricks spusťte následující příkaz.
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
user '<user>',
password '<password>'
);
Doporučujeme používat Azure Databricks tajemství místo prostého textu pro citlivé hodnoty, jako jsou přihlašovací údaje. Příklad:
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>')
)
Informace o nastavení tajných kódů najdete v tématu Správa tajných kódů.
Vytvoření zahraničního katalogu
Poznámka:
Pokud k vytvoření připojení ke zdroji dat použijete uživatelské rozhraní, zahrne se vytvoření cizího katalogu a tento krok můžete přeskočit.
Cizí katalog zrcadlí databázi v externím datovém systému, abyste mohli dotazovat a spravovat přístup k datům v této databázi pomocí Azure Databricks a Unity Catalog. Chcete-li vytvořit cizí katalog, použijete připojení ke zdroji dat, který již byl definován.
K vytvoření cizího katalogu můžete použít Průzkumníka katalogu nebo příkaz CREATE FOREIGN CATALOG
SQL v poznámkovém bloku Azure Databricks nebo v editoru dotazů SQL. K vytvoření katalogu můžete použít také rozhraní REST API Databricks nebo rozhraní příkazového řádku Databricks. Viz POST /api/2.1/unity-catalog/catalogs a příkazy Unity Catalog.
Požadovaná oprávnění:CREATE CATALOG
oprávnění k metastore a buď vlastnictví připojení, nebo privilegium na připojení.
Průzkumník katalogu
V pracovním prostoru Azure Databricks kliknutím na ikonu katalogu
Katalog otevřete Průzkumníka katalogu.
V horní části podokna katalogu klikněte na ikonu
Přidat nebo plus a v nabídce vyberte Přidat katalog.
Případně na stránce Rychlý přístup klikněte na tlačítko Katalogy a potom klikněte na tlačítko Vytvořit katalog.
Postupujte podle pokynů pro vytváření cizích katalogů v Vytvořit katalogy.
SQL
V poznámkovém bloku nebo editoru dotazů SQL spusťte následující příkaz SQL. Položky v závorkách jsou volitelné. Nahraďte zástupné hodnoty:
-
<catalog-name>
: Název katalogu v Azure Databricks. -
<connection-name>
: Objekt připojení , který určuje zdroj dat, cestu a přihlašovací údaje pro přístup. -
<database-name>
: Název databáze, kterou chcete zrcadlit jako katalog v Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Identifikátory rozlišující malá a velká písmena v databázích
Pole database
cizího katalogu se mapuje na identifikátor databáze Snowflake. Pokud identifikátor databáze Snowflake nerozlišuje velká a malá písmena, zachová se formátování, které používáte v cizím katalogu <database-name>
. Pokud je však identifikátor databáze Snowflake citlivý na velikost písmen, musíte cizí katalog <database-name>
uzavřít do dvojitých uvozovek, aby se zachovala správná velikost písmen.
Příklad:
database
je převeden naDATABASE
"database"
je převeden nadatabase
"database"""
je převeden nadatabase"
Pro únik dvojité uvozovky použijte jinou dvojitou uvozovku.
"database""
způsobí chybu, protože dvojitá uvozovka není správně escapována.
Další informace najdete v tématu Požadavky na identifikátor v dokumentaci Snowflake.
Podporované prosazení
Podporují se následující pushdowny:
- Filtry
- Projekce
- Omezení
- Spoje
- Agregace (Průměr, Corr, CovPopulation, CovSample, Počet, Maximum, Minimum, StddevPop, StddevSamp, Součet, VariancePop, VarianceSamp)
- Funkce (řetězcové funkce, matematické funkce, data, časová a časová razítka a další různé funkce, jako jsou Alias, Cast, SortOrder)
- Funkce Systému Windows (DenseRank, Rank, RowNumber)
- Třídění
Mapování datového typu
Při čtení ze Snowflake do Spark se datové typy mapují takto:
Typ sněhové vločky | Typ Spark |
---|---|
desetinný, číslo, numerický | TypDesetinnéhoČísla |
bigint (velké číslo), byteint (základní bajt), int (celé číslo), integer (celé číslo), smallint (malé celé číslo), tinyint (malé číslo) | IntegerType |
float, float4, float8 | FloatType |
dvojité číslo, dvojitá přesnost, reálné číslo | DoubleType |
char, znak, řetězec, text, čas, varchar | Typ řetězce |
binární | BinárníTyp |
boolean | Booleovský typ |
datum | Typ datumu |
datetime, timestamp, timestamp_ltz, timestamp_ntz, timestamp_tz | Typ časového razítka |
Omezení OAuth
Toto jsou omezení podpory OAuth:
- Koncový bod Snowflake OAuth musí být přístupný z IP adres řídicí roviny Databricks. Viz Odchozí provoz z řídící plochy Azure Databricks. Snowflake podporuje konfiguraci zásad sítě na úrovni integrace zabezpečení, což umožňuje samostatné síťové zásady, které umožňují přímé připojení z řídicí roviny Databricks ke koncovému bodu OAuth pro autorizaci.
- Použít Proxy, Proxy hostitel, Proxy port a možnosti konfigurace role Snowflake nejsou podporované. Jako součást rozsahu OAuth určete roli Snowflake.
Omezení privátního klíče PEM
Toto jsou omezení podpory privátního klíče PEM:
Ovladač Snowflake JDBC nepodporuje ověřování pomocí šifrovaných privátních klíčů. Pokud se chcete vyhnout chybám, vygenerujte klíč s přidanou možností
-nocrypt
následujícím způsobem:openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
Další materiály
Projděte si následující články v dokumentaci snowflake: