Čtení tabulek Databricks z klientů Icebergu
Katalog Iceberg REST slouží ke čtení tabulek zaregistrovaných v katalogu Unity v Azure Databricks z podporovaných klientů Icebergu, včetně Apache Sparku, Apache Flinku, Trino a Snowflake.
Číst pomocí koncového bodu katalogu Iceberg Unity Catalog
Katalog Unity poskytuje pouze pro čtení implementaci katalogového rozhraní API Iceberg REST pro tabulky, u kterých je povoleno čtení Icebergem.
Konfigurace přístupu pomocí koncového bodu /api/2.1/unity-catalog/iceberg
. Podrobnosti o použití tohoto rozhraní REST API najdete ve specifikaci rozhraní REST API Iceberg .
Poznámka
Služba Azure Databricks zavedla distribuci přihlašovacích údajů pro některé klienty čtečky Icebergu. Databricks doporučuje používat předávání přihlašovacích údajů k řízení přístupu k cloudovým úložištím pro podporované systémy. Podívejte se na poskytování přihlašovacích údajů v katalogu Unity pro přístup k externím systémům.
Pokud pro vašeho klienta není podporováno vydávání přihlašovacích údajů, musíte nakonfigurovat přístup z klienta do umístění cloudového úložiště obsahujícího soubory a metadata pro tabulku Delta s povoleným režimem Iceberg reads (UniForm). Podrobnosti o konfiguraci najdete v dokumentaci ke klientovi čtenáře Icebergu.
Požadavky
Azure Databricks podporuje přístup k tabulkám prostřednictvím katalogu Iceberg REST jako součást katalogu Unity. Abyste mohli tyto koncové body používat, musíte mít ve svém pracovním prostoru povolený katalog Unity. Následující typy tabulek mají nárok na čtení katalogu REST Icebergu:
- Spravované tabulky Unity Catalog s povoleným čtením pomocí Iceberg (UniForm).
- Externí tabulky katalogu Unity uložené v Delta Lake s možností čtení Iceberg (UniForm) jsou povoleny.
Viz Čtení tabulek Delta pomocí klientů Iceberg.
Pokud chcete nakonfigurovat přístup ke čtení tabulek Databricks z klientů Icebergu pomocí katalogu Iceberg REST, musíte provést následující kroky konfigurace:
- Povolte pro metastor přístup k externím datům. Viz Povolení přístupu k externím datům na metastoru.
- Udělte hlavnímu, který konfiguruje integraci, oprávnění
EXTERNAL USE SCHEMA
na schéma obsahující tabulky. Viz Přiřazení externího USE SCHEMAúčastníka. - Ověřte se pomocí osobního přístupového tokenu Databricks. Viz Autorizace přístupu k prostředkům Azure Databricks.
Čtení tabulek Iceberg pomocí Apache Sparku
Následuje příklad nastavení pro konfiguraci Apache Sparku pro čtení tabulek Azure Databricks jako Iceberg:
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
# Configuration for accessing Uniform tables in Unity Catalog
"spark.sql.catalog.<spark-catalog-name>": "org.apache.iceberg.spark.SparkCatalog",
"spark.sql.catalog.<spark-catalog-name>.type": "rest",
"spark.sql.catalog.<spark-catalog-name>.uri": "<workspace-url>/api/2.1/unity-catalog/iceberg",
"spark.sql.catalog.<spark-catalog-name>.token":"<token>",
"spark.sql.catalog.<spark-catalog-name>.warehouse":"<uc-catalog-name>"
Nahraďte následující proměnné:
-
<uc-catalog-name>
: Název katalogu Unity, který obsahuje tabulky. -
<spark-catalog-name>
: Název, který chcete přiřadit katalogu v relaci Sparku. -
<workspace-url>
: Adresa URL pracovního prostoru Azure Databricks. -
<token>
: token PAT pro instanční objekt konfigurující integraci.
Pomocí těchto konfigurací můžete pomocí identifikátoru <catalog-name>.<schema-name>.<table-name>
dotazovat tabulky Azure Databricks jako Iceberg v Apache Sparku. Pokud chcete přistupovat k tabulkám napříč více katalogy, musíte nakonfigurovat každý katalog samostatně.
Při dotazování tabulek v Katalogu Unity pomocí konfigurací Sparku mějte na paměti následující skutečnosti:
Potřebujete
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"
pouze v případě, že používáte uložené procedury specifické pro Iceberg.Azure Databricks používá cloudové úložiště objektů pro všechny tabulky. Soubor JAR sady Iceberg pro konkrétní cloud musíte přidat jako balíček Spark:
- AWS:
org.apache.iceberg:iceberg-aws-bundle:<iceberg-version>
- Azure:
org.apache.iceberg:iceberg-azure-bundle:<iceberg-version>
- GCP:
org.apache.iceberg:iceberg-gcp-bundle:<iceberg-version>
Podrobnosti najdete v dokumentaci k integraci Iceberg AWS pro Spark.
- AWS:
Čtení tabulek Databricks pomocí Snowflake
Následuje příklad doporučeného nastavení konfigurace, které umožňuje Snowflake číst tabulky Azure Databricks jako Iceberg:
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',
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 instanční objekt konfigurující integraci.
Příklad curl pomocí rozhraní REST API
K načtení tabulky můžete také použít volání rozhraní REST API, jako je volání rozhraní REST API v tomto curl
příkladu:
curl -X GET -H "Authentication: Bearer $OAUTH_TOKEN" -H "Accept: application/json" \
https://<workspace-instance>/api/2.1/unity-catalog/iceberg/v1/catalogs/<uc_catalog_name>/namespaces/<uc_schema_name>/tables/<uc_table_name>
Pak by se měla zobrazit odpověď podobná této:
{
"metadata-location": "abfss://my-container@my-storage-account.dfs.core.windows.net/path/to/iceberg/table/metadata/file",
"metadata": <iceberg-table-metadata-json>,
"config": {
"expires-at-ms": "<epoch-ts-in-millis>",
"adls.sas-token.<storage-account-name>.dfs.core.windows.net": "<temporary-sas-token>"
}
}
Poznámka
Pole expires-at-ms
v odpovědi označuje dobu vypršení platnosti přihlašovacích údajů a má výchozí dobu vypršení platnosti jedné hodiny. Aby bylo dosaženo lepšího výkonu, požádejte klienta, aby ukládal přihlašovací údaje do mezipaměti až do doby vypršení platnosti, než si vyžádá nové.