Sdílet prostřednictvím


Spouštění federovaných dotazů ve Snowflake

Tento článek popisuje, jak set federaci Lakehouse ke 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 ke své databázi Snowflake pomocí Federace Lakehouse, musíte ve službě Azure Databricks Unity vytvořit následující Catalog metastore:

  • Připojení k databázi Snowflake.
  • vzdálený catalog, který zrcadlí vaši databázi Snowflake v Unity Catalog, aby bylo možné využít syntaxi dotazů Unity Catalog a nástroje pro správu dat k řízení přístupu uživatelů Azure Databricks do databáze.

Než začnete

Požadavky na pracovní prostor:

  • Pracovní prostor povolený pro Unity Catalog.

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 doporučení k sítím pro Federaci Lakehouse.
  • Výpočetní prostředky Azure Databricks musí používat Databricks Runtime 13.3 LTS nebo novější a sdílené nebo režimu přístupu jednoho uživatele.
  • 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 Unity Catalog připojenému k pracovnímu prostoru.
  • Chcete-li vytvořit cizí catalog, musíte mít oprávnění CREATE CATALOG k metastore a buď být vlastníkem připojení, nebo mít privilegium CREATE FOREIGN CATALOG na 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í values:

  • <integration-name>: Jedinečný název integrace OAuth.

  • <workspace-url>: Adresa URL pracovního prostoru Azure Databricks. Musíte setOAUTH_REDIRECT_URIhttps://<workspace-url>/login/oauth/snowflake.html, where<workspace-url> je jedinečná adresa URL pracovního prostoru Azure Databricks, where vytvoříte připojení Snowflake.

  • <duration-in-seconds>: Doba trvání tokenů refresh.

    Důležité

    OAUTH_REFRESH_TOKEN_VALIDITY je vlastní pole, které je ve výchozím nastavení nastaveno na set po dobu 90 dnů. Po vypršení platnosti tokenu refresh je nutné připojení znovu ověřit. Set omezit délku pole na přiměřenou dobu.

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 podle pokynů v části Jak na to: Generate a použijte OAuth token prostřednictvím Snowflake OAuth pro vlastní klienty ve znalostní databázi Snowflake.

Vytvoření připojení

Připojení určuje cestu a credentials pro přístup k externímu databázovému systému. K vytvoření připojení můžete použít Catalog Explorer 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 .

Catalog Explorer

  1. V pracovním prostoru Azure Databricks klikněte na ikonu CatalogCatalog.

  2. V horní části podokna Catalog klikněte na ikonu Přidata na ikonu pro přidání a v nabídce zvolte selectPřidat připojení.

    Případně na stránce Rychlý přístup klikněte na tlačítko Externí data >, přejděte na kartu Connections a klikněte na Vytvořitpřipojení .

  3. Na stránce základy Připojení průvodce Set připojení zadejte uživatelsky přívětivý název Název připojení.

  4. Select typ připojení u Snowflake.

  5. Pro typ ověřování, selectUsername and password (základní ověřování), OAuth access token, PEM Private Keynebo OAuth z rozevírací nabídky.

  6. (Volitelné) Přidejte komentář.

  7. Klikněte na Další.

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

    • (OAuth) Přihlášení pomocíSnowflake: Klikněte a přihlaste se ke Snowflake pomocí svého credentialsOAuth .

    • (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í budete přesměrováni zpět do průvodce připojení Set.

  9. Klikněte na Vytvořit připojení.

  10. (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é selectPouží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é selectpoužít proxy a zadat proxy host.
    • (Volitelné) Snowflake role: Výchozí zabezpečovací role, která se má použít pro relaci po připojení.
  11. Klikněte na Další.

  12. Na stránce základů Catalog zadejte název pro cizí catalog. Cizí catalog zrcadlí databázi v externím datovém systému, abyste mohli provádět dotazy a řídit přístup k datům v této databázi pomocí Azure Databricks a Unity Catalog.

  13. (Volitelné) Kliknutím na test připojení potvrďte, že funguje.

  14. Klikněte na Vytvořit catalog.

  15. Na stránce Access uživatelé mají přístup do pracovních prostorů select, které jste vytvořili catalog. Můžete selectpřidělit přístup všem pracovním prostorům, nebo klepněte na Přiřadit pracovním prostorům, vyberte pracovní prostory select, a potom klikněte na Přiřadit.

  16. Změňte vlastníka , kterého bude moct spravovat přístup ke všem objektům v catalog. Začněte do textového pole zadávat objekt zabezpečení a potom ve vrácených výsledcích klikněte na objekt zabezpečení.

  17. Grant oprávnění na catalog. Klikněte na Grant:

    1. Zadejte hlavní uživatele, kteří budou mít přístup k objektům v catalog. Začněte do textového pole zadávat objekt zabezpečení a potom ve vrácených výsledcích klikněte na objekt zabezpečení.
    2. Select přednastavení privilegia grant ke každému uživateli. Všichni uživatelé účtu mají ve výchozím nastavení udělené BROWSE.
      • Select Čtečka dat z rozevírací nabídky grantread oprávnění k objektům v catalog.
      • Select Data Editor z rozevírací nabídky grantread a modify oprávnění k objektům v catalog.
      • Ručně select oprávnění k grant.
    3. Klikněte na Grant.
  18. Klikněte na Další.

  19. Na stránce Metadata zadejte dvojice klíč-hodnota pro spravované značky.

  20. (Volitelné) Přidejte komentář.

  21. 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 tajné kódy Azure Databricks namísto řetězců prostého textu pro citlivé , jako je . 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řte cizí catalog

Poznámka:

Pokud k vytvoření připojení ke zdroji dat použijete uživatelské rozhraní, zahrne se cizí catalog vytvoření a tento krok můžete přeskočit.

Cizí catalog zrcadlí databázi v externím datovém systému, abyste mohli provádět dotazy a řídit přístup k datům v této databázi pomocí Azure Databricks a Unity Catalog. Chcete-li vytvořit cizí catalog, použijete připojení ke zdroji dat, který již byl definován.

K vytvoření cizího catalogmůžete použít Catalog Explorer nebo příkaz CREATE FOREIGN CATALOG SQL v poznámkovém bloku Azure Databricks nebo v editoru dotazů SQL.

K vytvoření catalogmůž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 metastoru a vlastnictví připojení nebo CREATE FOREIGN CATALOG oprávnění k připojení.

Catalog Explorer

  1. V pracovním prostoru Azure Databricks kliknutím na ikonu CatalogCatalog otevřete průzkumníka Catalog.

  2. V horní části podokna Catalog klikněte na ikonu Přidat nebo plusIkona Přidat a selectPřidat catalog z nabídky.

    Případně na stránce Rychlý přístup klikněte na tlačítko Catalogs a potom klikněte na tlačítko Vytvořit catalog.

  3. Postupujte podle pokynů pro vytváření cizích catalogs v Vytvořit catalogs.

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ý znak values:

  • <catalog-name>: Název catalog v Azure Databricks.
  • <connection-name>: objekt připojení , který určuje zdroj dat, cestu a přístup credentials.
  • <database-name>: Název databáze, kterou chcete zrcadlit jako catalog v Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Identifikátory databáze citlivé na malá a velká písmena

Pole database cizího catalog mapuje na databázi Snowflake identifier. Pokud databáze Snowflake identifier nerozlišuje malá a velká písmena, velikost písmen, kterou používáte v cizím catalog<database-name>, zůstane zachována. Pokud je však databáze Snowflake identifier rozlišována velikostí písmen, musíte cizí catalog<database-name> zabalit do dvojitých uvozovek, aby se zachoval případ psaní.

Příklad:

  • database je převeden na DATABASE

  • "database" je převeden na database

  • "database""" je převeden na database"

    Pokud chcete uvozit dvojitou uvozovku, použijte jinou dvojitou uvozovku.

  • "database"" výsledkem je chyba, protože dvojitá uvozovka není správně uvozována.

Další informace najdete v požadavcích Identifier v dokumentaci Snowflake.

Podporované odsdílení změn

Podporují se následující nabízení:

  • Filtry
  • Projekce
  • Limit
  • Spojení
  • Agregace (Průměr, Corr, CovPopulation, CovSample, Count, Max, Min, StddevPop, StddevSamp, Sum, 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 Sparku se datové typy mapuje takto:

Typ sněhové vločky Typ Sparku
decimal, number, numeric DecimalType
bigint, byteint, int, integer, smallint, tinyint IntegerType
float, float4, float8 FloatType
double, double precision, real DoubleType
char, character, string, text, time, varchar StringType
binární BinaryType
boolean BooleanType
datum Typ data
datetime, timestamp, timestamp_ltz, timestamp_ntz, timestamp_tz TimestampType

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 řídicí roviny 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.
  • Možnosti konfigurace role Proxy, Proxy, Proxy server a Snowflake nejsou podporované. Jako součást oboru OAuth zadejte 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íčů. Abyste se vyhnuli chybám, použijte klíč generate s přidanou volbou -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: