Režim kompatibility

Důležité

Tato funkce je ve verzi Public Preview.

Pomocí režimu kompatibility můžete číst spravované tabulky Katalogu Unity, materializovaná zobrazení a streamované tabulky z externích systémů a současně udržovat optimální výkon v Azure Databricks. Tato funkce automaticky generuje verze tabulek jen pro čtení, ke kterým může přistupovat jakýkoli klient Delta Lake nebo Iceberg.

Přehled

Pokud je povolená spravovaná tabulka, streamovaná tabulka nebo materializované zobrazení, režim kompatibility vygeneruje ve zvoleném umístění verzi tabulky jen pro čtení. Tato verze kompatibility zahrnuje metadata verze 1 pro formáty Delta Lake i Iceberg, která poskytují následující možnosti:

  • Interoperabilita s libovolným klientem Delta Lake: Čtení spravovaných tabulek, včetně streamovaných tabulek nebo materializovaných zobrazení, od klientů, jako jsou Amazon Athena, Snowflake a Amazon Redshift, přímo z úložiště nebo prostřednictvím rozhraní Rest API Unity
  • Interoperabilita s libovolným klientem Icebergu: Čtení spravovaných tabulek, včetně streamovaných tabulek nebo materializovaných zobrazení, od klientů Icebergu, jako jsou Apache Spark, Apache Trino a Snowflake, prostřednictvím katalogu Iceberg REST
  • Automatizace ‚nastavit a zapomenout‘: Automatizace aktualizací dat a metadat pro verze kompatibility s možností konfigurace intervalů aktualizace blízko reálného času

Požadavky

Pokud chcete povolit režim kompatibility v tabulce, musíte používat katalog Unity. Podporovány jsou pouze streamingové tabulky Unity Catalog, materializovaná zobrazení Unity Catalog a spravované tabulky Unity Catalog. Externí tabulky katalogu Unity se nepodporují.

Kromě toho ověřte, že máte v katalogu Unity zaregistrované externí umístění s odpovídajícími nastaveními a oprávněními:

  • Cílová lokace musí existovat ve vašem účtu úložiště a být prázdná.
  • Cílové umístění, nebo jakákoli z jeho nadřazených složek, musí být zaregistrováno jako externí umístění v katalogu Unity.
  • Musíte mít CREATE EXTERNAL TABLE oprávnění pro externí umístění.
  • Cílové umístění a všechny nadřazené nebo podřízené složky nesmí být použity jako umístění režimu kompatibility pro jinou tabulku za posledních 7 dnů.

Povolit režim kompatibility u tabulek

Pro streamované tabulky, materializované pohledy a spravované mělké klony nastavte při vytváření následující vlastnosti tabulky:

CREATE [STREAMING TABLE | MATERIALIZED VIEW | TABLE] my_catalog.my_schema.my_table
TBLPROPERTIES(
  'delta.universalFormat.enabledFormats' = 'compatibility',
  'delta.universalFormat.compatibility.location' = '<location>'
)

U spravovaných tabulek v Katalogu Unity můžete režim kompatibility povolit také při změně existující tabulky:

-- For existing managed tables
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
  'delta.universalFormat.enabledFormats' = 'compatibility',
  'delta.universalFormat.compatibility.location' = '<location>'
)

První vygenerování verze kompatibility trvá až jednu hodinu. Tabulku můžete okamžitě aktualizovat ručně , abyste potvrdili, že funguje.

Poznámka:

Je nutné zadat úplný název třídílné tabulky (catalog.schema.table_name). Například pro users.john.my_table, usersje katalog a john je schéma.

Kontrola, jestli je povolený režim kompatibility

Pokud chcete ověřit, že je v tabulce povolený režim kompatibility, zkontrolujte, jestli delta.universalFormat.enabledFormats = 'compatibility' vlastnost tabulky existuje. Tuto vlastnost můžete zobrazit v uživatelském rozhraní Průzkumníka katalogu na kartě podrobností tabulky.

V poznámkovém bloku můžete také spustit následující příkazy SQL:

DESC DETAIL my_catalog.my_schema.my_table
DESC EXTENDED my_catalog.my_schema.my_table

Ve výstupu vyhledejte tyto vlastnosti:

  • delta.universalFormat.enabledFormats: "compatibility" – Označuje, že je povolený režim kompatibility.
  • delta.universalFormat.compatibility.location – Zobrazuje umístění verze režimu kompatibility.

Konfigurace intervalů aktualizace

U spravovaných tabulek Katalogu Unity můžete nakonfigurovat, jak často se aktualizuje verze režimu kompatibility nastavením intervalu aktualizace:

-- Evaluate whether a refresh is needed after every commit (fastest)
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
  'delta.universalFormat.enabledFormats' = 'compatibility',
  'delta.universalFormat.compatibility.location' = '<location>',
  'delta.universalFormat.compatibility.targetRefreshInterval' = '0 MINUTES'
)

-- Refresh hourly (default)
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
  'delta.universalFormat.enabledFormats' = 'compatibility',
  'delta.universalFormat.compatibility.location' = '<location>',
  'delta.universalFormat.compatibility.targetRefreshInterval' = '1 HOUR'
)

Výchozí interval aktualizace je 1 HOUR. Nastavení intervalu aktualizace pod 1 hodinu se nedoporučuje a nedochází k aktualizacím častěji. Výjimkou je, když nastavíte hodnotu intervalu aktualizace na 0 MINUTES. V tomto případě Azure Databricks kontroluje změny po každém potvrzení a v případě potřeby aktivuje aktualizaci.

U streamovaných tabulek a materializovaných zobrazení se nevyžaduje interval aktualizace. 0 MINUTES je výchozí hodnota.

Poznámka:

Změny, které výrazně ovlivňují dobu aktualizace (například přejmenování sloupce nebo rozšíření typu), se provádějí každou hodinu bez ohledu na interval cílové aktualizace.

Ruční aktualizace

Ruční aktivace aktualizace verze kompatibility:

REFRESH [TABLE | STREAMING TABLE | MATERIALIZED VIEW] my_catalog.my_schema.my_table SYNC UNIFORM

Ruční aktualizace je užitečná pro testování správného fungování režimu kompatibility nebo zajištění, že vaše verze kompatibility je up-to-date před následným čtením. Čekání na automatické aktualizace ale může být cenově výhodnější.

Monitorování stavu generování dat a metadat

Režim kompatibility generuje data a metadata automaticky a asynchronně. U spravovaných tabulek v Katalogu Unity probíhá generování ve výchozím nastavení každou hodinu nebo na základě nakonfigurovaného intervalu aktualizace. U streamingových tabulek a materializovaných zobrazení generování probíhá po aktualizaci tabulek, po provedení nových potvrzení.

Kontrola úspěšného vygenerování dat a metadat:

  1. Umožňuje DESCRIBE HISTORY najít nejnovější verzi zdrojové tabulky:

    DESC HISTORY my_catalog.my_schema.my_table
    

    DESCRIBE HISTORY Příkaz ke kontrole nejnovější verze zdrojové tabulky

    Tento příkaz vrátí historii aktualizací do režimu kompatibility, včetně verze Delta Lake a časového razítka. Horní řádek obsahuje nejnovější verzi a časové razítko.

  2. Slouží DESCRIBE EXTENDED k vyhledání odpovídající verze režimu kompatibility:

    DESC EXTENDED my_catalog.my_schema.my_table
    

    PŘÍKAZ 'DESCRIBE EXTENDED' pro kontrolu verze režimu kompatibility

    Vyhledejte pole v části Jednotné informace o kompatibilitě:

    • Poslední aktualizace verze: Verze Delta Lake, která byla naposledy aktualizována režimem kompatibility
    • Poslední aktualizace: Časové razítko poslední aktualizace

    Režim kompatibility je up-to-date, pokud verze tabulky odpovídá verzi nalezené v kroku 1.

  3. Používá se DESC HISTORY u samotné verze kompatibility:

    DESC HISTORY delta.\`<compatibility_location>\`
    

    DESCRIBE HISTORY příkaz ke kontrole historie verzí kompatibility

  4. V Průzkumníku katalogu zobrazte pole metadat pro verzi kompatibility. Režim kompatibility je aktuální, pokud verze Delta Lake shoduje se s verzí ve kroku 3.

    Kontrola nejnovější verze metadat tabulek

Monitorování nákladů

Prediktivní optimalizace zpracovává výpočetní cluster, který provádí automatické aktualizace režimu kompatibility. Pokud chcete zobrazit přidružené náklady, zadejte dotaz na tabulky fakturace systému:

SELECT
  DATE_TRUNC('DAY', start_time) AS day,
  SUM(usage_quantity) AS dbus
FROM
  system.storage.predictive_optimization_operations_history
WHERE
  operation_type = "COMPATIBILITY_MODE_REFRESH"
GROUP BY 1
ORDER BY 1 DESC;

Tento dotaz hlásí využití pouze pro automatické aktualizace. Náklady na ruční aktualizace jsou spojené s vaším výpočetním prostředím a neexistuje přímý způsob, jak tyto náklady samostatně sledovat. Obecně platí, že náklady na ruční aktivační událost jsou úměrné nákladům počáteční operace zápisu do původní tabulky.

Odebrání nepoužívaných datových souborů

Pokud chcete odebrat nepoužívané datové soubory ve verzi kompatibility tabulky, použijte VACUUM:

VACUUM delta.'<compatibility_mode_location_path>';

Pokud chcete najít cestu k umístění režimu kompatibility, použijte DESCRIBE EXTENDED příkaz Kontrola , jestli je povolený režim kompatibility. Ve výstupu představuje hodnota delta.universalFormat.compatibility.location polohu.

Čtení verzí kompatibility z externích klientů

Ke čtení dat z verzí kompatibility můžete použít libovolného klienta Delta Lake nebo Iceberg. Příklady pro Amazon Athena a Snowflake (delta reader) najdete níže.

Amazon Athena

  1. V Editoru dotazů Athena vytvořte externí tabulku se zadaným umístěním:

    CREATE EXTERNAL TABLE <table_name>
    LOCATION '<compatibility_location>'
    TBLPROPERTIES ('table_type' = 'DELTA')
    
  2. Přečtěte si tabulku:

    SELECT * FROM <table_name>
    

Čtenář Snowflake Delta Lake

  1. Vytvořte integraci úložiště pro přístup k umístění úložiště (viz dokumentace ke Snowflake).

  2. Vytvořte externí tabulku s formátem Delta Lake:

    CREATE OR REPLACE EXTERNAL TABLE <table_name>
    WITH LOCATION = @<my_location>
    FILE_FORMAT = (TYPE = PARQUET)
    TABLE_FORMAT = DELTA
    AUTO_REFRESH = false
    REFRESH_ON_CREATE = false;
    
  3. Aktualizujte tabulku (automatická aktualizace není podporovaná pro formát Delta Lake ve Snowflake):

    ALTER EXTERNAL TABLE <table_name> REFRESH;
    
  4. Přečtěte si tabulku:

    SELECT * FROM <table_name>;
    

Čtení verzí kompatibility z rozhraní Unity REST API

Tabulky s povoleným režimem kompatibility je možné číst podle názvu prostřednictvím rozhraní Unity REST API se speciálními parametry. U streamovaných tabulek nastavte následující parametr rozhraní API:

GET /api/2.1/unity-catalog/tables/{full_name}?read_streaming_table_as_managed=true

Pro materializovaná zobrazení nastavte následující parametr rozhraní API:

GET /api/2.1/unity-catalog/tables/{full_name}?read_materialized_view_as_managed=true

Čtení verzí kompatibility z katalogu Iceberg REST

Tabulky s povoleným režimem kompatibility lze číst z libovolného klienta Icebergu pomocí katalogu Iceberg REST. Režim kompatibility funguje automaticky pro formáty tabulek Delta Lake i Iceberg.

Požadavky na nastavení

  1. Povolte externí přístup k datům v metastoru.
  2. Udělte oprávnění EXTERNAL USE SCHEMA na schéma.
  3. Vytvoření tokenu PAT (Personal Access Token) Azure Databricks

Konfigurace Apache Sparku

bin/spark-sql --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.8.0,org.apache.iceberg:iceberg-azure-bundle:1.8.0 \
  --conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \
  --conf spark.sql.catalog.catalog_name=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.catalog_name.type=rest \
  --conf spark.sql.catalog.catalog_name.uri=<workspace-url>/api/2.1/unity-catalog/iceberg-rest \
  --conf spark.sql.catalog.catalog_name.token=<PAT> \
  --conf spark.sql.catalog.catalog_name.warehouse=<uc-catalog-name>

Další informace najdete v tématu Použití tabulek Iceberg s Apache Sparkem.

Konfigurace Snowflake

Snowflake nabízí dvě možnosti přístupu k tabulkám režimu kompatibility prostřednictvím katalogu ICEBERG REST: prostřednictvím databází propojených s katalogem Snowflake nebo externích tabulek.

Pro obě možnosti nejprve nakonfigurujte integraci katalogu Snowflake:

CREATE OR REPLACE CATALOG INTEGRATION <catalog-integration-name>
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = '<uc-schema-name>'
  REST_CONFIG = (
    CATALOG_URI = '<workspace-url>/api/2.1/unity-catalog/iceberg-rest',
    WAREHOUSE = '<uc-catalog-name>'
  )
  REST_AUTHENTICATION = (
    TYPE = BEARER
    BEARER_TOKEN = '<token>'
  )
  ENABLED = TRUE;

Nahraďte následující proměnné:

  • <catalog-integration-name>: Název, který chcete přiřadit katalogu registrovanému ve Snowflake.
  • <uc-schema-name>: Název schématu v katalogu Unity, ke které potřebujete přístup.
  • <uc-catalog-name>: Název katalogu v Unity Catalog, k němuž potřebujete přístup.
  • <workspace-url>: Adresa URL pracovního prostoru Azure Databricks.
  • <token>: token PAT pro hlavního správce konfigurujícího integraci.

Databáze propojené s katalogem

Databáze propojené s katalogem Snowflake se automaticky synchronizují s Katalogem Unity a detekují schémata a tabulky Iceberg. To eliminuje potřebu ruční aktualizace metadat.

Po konfiguraci integrace katalogu Snowflake si projděte dokumentaci Snowflake a vytvořte databázi propojenou s katalogem pro přístup k tabulkám.

Poznámka:

Tabulky přístupné prostřednictvím režimu kompatibility jsou jen pro čtení. Vzhledem k tomu, že databáze propojené s katalogem jsou funkce Snowflake, doporučuje Databricks odkazovat na dokumentaci Snowflake pro podporované operace se streamovanými tabulkami Azure Databricks, materializovanými zobrazeními nebo spravovanými tabulkami s povoleným režimem kompatibility.

Externí tabulky

Případně můžete po vytvoření integrace katalogu Snowflake vytvořit externí tabulky. Tento přístup vyžaduje ruční aktualizaci metadat, aby se zobrazily aktualizace.

CREATE OR REPLACE ICEBERG TABLE my_table
  CATALOG = 'my_uc_int'
  CATALOG_TABLE_NAME = '<uc-st/mv-name>';

Zakázat režim kompatibility

Režim kompatibility zakážete zrušením nastavení odpovídající vlastnosti tabulky:

-- For UC managed tables
ALTER TABLE my_table UNSET TBLPROPERTIES('delta.universalFormat.enabledFormats')

-- For streaming tables and materialized views
CREATE OR REPLACE [STREAMING TABLE | MATERIALIZED VIEW] my_table
TBLPROPERTIES('delta.universalFormat.enabledFormats' = '')

Výstraha

Zrušením resetování režimu kompatibility se okamžitě zastaví generování dat a metadat. Po 7 dnech se přidružená data a metadata odstraní. Během tohoto 7denního období můžete obnovit data a metadata opětovným povolením režimu kompatibility ve stejné tabulce.

Omezení

  • Přístup jen pro čtení: Verze kompatibility je jen pro čtení. Do verze kompatibility nelze zapisovat.
  • Nepodporuje zabezpečení na úrovni řádků (RLS) ani zabezpečení na úrovni sloupců (CLS): Nelze povolit režim kompatibility u tabulek se zabezpečením na úrovni řádků (RLS) nebo na úrovni sloupců (CLS).
  • Přejmenování sloupce oddílu není podporováno v tabulkách s povoleným režimem kompatibility. Přejmenování datového sloupce je podporováno.
  • Omezené funkce tabulek: Následující funkce nejsou ve verzi kompatibility k dispozici:
    • Kolace sloupce
    • Primární klíče
    • Časová cesta
    • Změna datového kanálu
    • Názvy sloupců se speciálními znaky (budou přejmenovány)