Sdílet prostřednictvím


Spouštění federovaných dotazů na Amazon Redshiftu

Tento článek popisuje, jak set up Lakehouse Federation ke spouštění federovaných dotazů na dotazy Spustit na datech Amazon Redshift, která nespravuje Azure Databricks. Další informace o federaci Lakehouse najdete v tématu Co je Federace Lakehouse?.

Abyste se mohli připojit ke svým dotazům spuštěným v databázi Amazon Redshift pomocí Lakehouse Federation, musíte ve svém metastoru Azure Databricks Unity Catalog vytvořit následující:

  • Připojení ke spuštěným dotazům v databázi Amazon Redshift.
  • cizích catalog, které zrcadlí dotazy Spustit v databázi Amazon Redshift v Unity Catalog, abyste mohli pomocí nástrojů syntaxe dotazů a zásad správného řízení dat Unity Catalog spravovat uživatelský přístup k databázi Azure Databricks.

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 režim přístupu sdílené nebo 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 externí catalog, 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 k připojení.

Další požadavky na oprávnění jsou uvedeny v následující části založené na úlohách.

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 Unity Catalog příkazy.

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řidat nebo plusIkona Přidat a v nabídce 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řit připojení.

  3. Na stránce s podrobnostmi o připojení v průvodci nastavením připojení nahoru Set zadejte název připojení přátelský k uživateli .

  4. Select a typ připojeníRedshift.

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

  6. Klikněte na Další.

  7. Na stránce Ověřování zadejte následující parametry připojení pro vaši instanci Redshiftu.

    • Hostitel: Příklad: redshift-demo.us-west-2.redshift.amazonaws.com
    • Port: Příklad: 5439
    • Uživatel: Příklad: redshift_user
    • Heslo: Příklad: password123
  8. (Volitelné) Zakázat ověření názvů hostitelů SSL.

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

  10. Na základní stránce Catalog zadejte název pro cizí catalog. Cizí catalog zrcadlí databázi v externím datovém systému, což vám umožní provádět dotazy a spravovat přístup k datům této databáze pomocí Azure Databricks a Unity Catalog.

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

  12. Klikněte na Vytvořit catalog.

  13. Na stránce Access mají uživatelé přístup k pracovním prostorům select, které jste vytvořili v catalog. Můžete selectVšechny pracovní prostory mají přístupnebo klepněte na Přiřadit pracovním prostorům, select pracovních prostorů a potom klikněte na Přiřadit.

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

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

    1. Určete, které hlavní subjekty budou mít přístup k objektům v catalog. Začněte do textového pole zadávat entitu a potom ve vrácených výsledcích klikněte na entitu.
    2. Select přednastavení oprávnění na na grant pro každého uživatele. 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.
  16. Klikněte na Další.

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

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

  19. 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 redshift
OPTIONS (
  host '<hostname>',
  port '<port>',
  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 redshift
OPTIONS (
  host '<hostname>',
  port '<port>',
  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ř cizí catalog

Poznámka:

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

Cizí catalog 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 externí 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 Unity příkazy 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 ikonu plus 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ý 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>');

Podporované odsdílení změn

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

  • Filtry
  • Projekce
  • Limit
  • Spojení
  • Aggregates (Average, Count, Max, Min, StddevPop, StddevSamp, Sum, VarianceSamp)
  • Funkce (řetězcové funkce a další různé funkce, jako jsou Alias, Cast, SortOrder)
  • Třídění

Následující nabízená oznámení nejsou podporována:

  • Funkce Systému Windows

Mapování datového typu

Při čtení z Redshiftu do Sparku se datové typy mapuje takto:

Typ Redshiftu Typ Sparku
numerické DecimalType
int2, int4 IntegerType
int8, oid, xid LongType
float4 FloatType
dvojitá přesnost, float8, peníze DoubleType
bpchar, char, character varying, name, super, text, tid, varchar StringType
bytea, geometrie, varbyte BinaryType
bit, bool BooleanType
datum Typ data
tabstime, time, time with time zone, timetz, timetz, time without timetamp, timestamp with timetamp, timestamptz, timestamptz without time zone* TimestampType/TimestampNTZType

*Při čtení z Redshiftu je Redshift Timestamp mapován na Spark TimestampType pokud infer_timestamp_ntz_type = false (výchozí). Redshift Timestamp je mapován na TimestampNTZType if infer_timestamp_ntz_type = true.