Použití SQLAlchemy s Azure Databricks

Azure Databricks poskytuje dialekt SQLAlchemy(systém SQLAlchemy používá ke komunikaci s různými typy implementací a databází databázového rozhraní API) pro Azure Databricks. SQLAlchemy je sada nástrojů SQL Python a mapovač relačních objektů (ORM). SQLAlchemy poskytuje sadu známých vzorů trvalosti na podnikové úrovni, které jsou navržené pro efektivní a vysoce výkonný přístup k databázi přizpůsobené jednoduchému a pythonickému doménovému jazyku. Vizte Funkce a Filozofie.

Aby bylo možné používat funkce SQLAlchemy s Azure Databricks, musí být nainstalovaný dialekt SQLAlchemy pro Azure Databricks. Tento článek se zabývá dialektem SQLAlchemy pro Azure Databricks verze 1.0 a 2.0, který bude založený na konektoru SQL Databricks pro Python verze 4.0.0 nebo vyšší.

Požadavky

  • Vývojový počítač s Pythonem >=3.8 a <=3.11.
  • Databricks doporučuje používat virtuální prostředí Pythonu, například prostředí, která poskytuje venv , která jsou součástí Pythonu. Virtuální prostředí pomáhají zajistit, abyste společně používali správné verze Pythonu a konektor SQL Databricks pro Python. Nastavení a používání virtuálních prostředí je mimo rozsah tohoto článku. Další informace najdete v tématu Vytváření virtuálních prostředí.
  • Existující klastr nebo SQL sklad.

Začínáme

  • Nainstalujte databricks-sqlalchemy pro SQLAlchemy v1 pomocí pip install databricks-sqlalchemy~=1.0 nebo sqlAlchemy v2 pomocí pip install databricks-sqlalchemy. Informace o verzi najdete v historii verzí databricks-sqlalchemy.

  • Shromážděte následující informace pro cluster nebo SQL Warehouse, který chcete použít:

    Klastr

    • Název hostitele serveru clusteru. Hodnotu názvu hostitele serveru můžete získat na kartě Pokročilé možnosti > JDBC/ODBC pro váš cluster.
    • HTTP cesta clusteru. Můžete to získat z hodnoty HTTP Path na kartě Upřesněné možnosti JDBC/ODBC pro váš cluster.

    SQL Warehouse

    • Název hostitele serveru služby SQL Warehouse. Můžete to získat z hodnoty názvu hostitele na záložce Podrobnosti připojení pro vaše SQL datové úložiště.
    • Cesta HTTP služby SQL Warehouse. Můžete to získat z hodnoty HTTP cesta na kartě Podrobnosti připojení pro váš SQL warehouse.

Ověřování

SQLAlchemy dialekt pro Azure Databricks používá Databricks SQL Connector pro Python k připojení a předává hodnoty connect_args do konektoru. Podporuje následující typy autentizace:

Autentizace osobního přístupového tokenu

Pokud chcete vytvořit osobní přístupový token Azure Databricks, postupujte podle pokynů v tématu Vytvoření osobních přístupových tokenů pro uživatele pracovního prostoru.

K ověření dialektu SQLAlchemy použijte následující fragment kódu. Tento fragment kódu předpokládá, že jste nastavili následující proměnné prostředí:

  • Nastavte DATABRICKS_TOKENna osobní přístupový token Azure Databricks.
  • Nastavte na hodnotu DATABRICKS_SERVER_HOSTNAME hostitele serveru pro váš cluster nebo SQL sklad.
  • DATABRICKS_HTTP_PATH, nastavte hodnotu HTTP cesty pro váš cluster nebo SQL warehouse.
  • DATABRICKS_CATALOG, nastavte na cílový katalog v Unity Catalog.
  • DATABRICKS_SCHEMA, je nastavena na cílové schéma (známé také jako databáze) v katalogu Unity.

Pokud chcete nastavit proměnné prostředí, přečtěte si dokumentaci k vašemu operačnímu systému.

import os
from sqlalchemy import create_engine

access_token    = os.getenv("DATABRICKS_TOKEN")
server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME")
http_path       = os.getenv("DATABRICKS_HTTP_PATH")
catalog         = os.getenv("DATABRICKS_CATALOG")
schema          = os.getenv("DATABRICKS_SCHEMA")

engine = create_engine(
  url = f"databricks://token:{access_token}@{server_hostname}?" +
        f"http_path={http_path}&catalog={catalog}&schema={schema}"
)

# ...

Pomocí předchozí engine proměnné se připojíte ke zadanému katalogu a schématu prostřednictvím výpočetního prostředku Azure Databricks.

Ověřování uživatele pomocí OAuth pro přístup k počítači (U2M)

OAuth U2M autentizace využívá lidské přihlášení v reálném čase a souhlas k autentizaci cílového uživatelského účtu Azure Databricks. Pro Databricks SQL Connector pro verze Python, které jej podporují v každém cloudu, viz OAuth user-to-machine (U2M) autentizace.

Pro ověření dialektu SQLAlchemy pomocí OAuth U2M použijte následující úryvek kódu. Tento úryvek předpokládá, že jste nastavili proměnné prostředí DATABRICKS_SERVER_HOSTNAME, DATABRICKS_HTTP_PATH, DATABRICKS_CATALOG a DATABRICKS_SCHEMA, jak je popsáno v autentizaci osobního přístupového tokenu.

import os
from sqlalchemy import create_engine

server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME")
http_path       = os.getenv("DATABRICKS_HTTP_PATH")
catalog         = os.getenv("DATABRICKS_CATALOG")
schema          = os.getenv("DATABRICKS_SCHEMA")

engine = create_engine(
  url = f"databricks://{server_hostname}?" +
        f"http_path={http_path}&catalog={catalog}&schema={schema}",
  connect_args = {"auth_type": "databricks-oauth"}
)

# ...

Ověřování OAuth mezi stroji (M2M)

Ověřování OAuth M2M ověřuje jako instanční objekt služby Azure Databricks. Musíte také nainstalovat Databricks SDK pro Python (například spuštěním pip install databricks-sdk). Pro Databricks SQL Connector pro Python a verze SDK, které jej podporují v každém cloudu, viz OAuth machine-to-machine (M2M) autentizace.

Pro použití OAuth M2M autentizace udělejte následující:

  1. V pracovním prostoru Azure Databricks vytvořte instanční objekt Azure Databricks a vytvořte pro tento instanční objekt tajný klíč OAuth. Viz Autorizace přístupu servisního principála k Azure Databricks pomocí OAuth.
  2. Dejte tomuto instančnímu objektu služby přístup ke svému clusteru nebo SQL warehouse. Přečtěte si informace o výpočetních oprávněních nebo správě SQL skladu.

Pro ověření dialektu SQLAlchemy pomocí OAuth M2M použijte následující úryvek kódu. Kromě proměnných prostředí DATABRICKS_SERVER_HOSTNAME, DATABRICKS_HTTP_PATH, DATABRICKS_CATALOG a DATABRICKS_SCHEMA tento úryvek předpokládá, že jste nastavili následující proměnné prostředí:

  • DATABRICKS_CLIENT_ID, nastavte na hodnotu UUID nebo ID aplikace instančního objektu.
  • DATABRICKS_CLIENT_SECRET, nastavte hodnotu na Secret pro heslo OAuth instančního objektu služby.
import os
from databricks.sdk.core import Config, oauth_service_principal
from sqlalchemy import create_engine

server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME")
http_path       = os.getenv("DATABRICKS_HTTP_PATH")
catalog         = os.getenv("DATABRICKS_CATALOG")
schema          = os.getenv("DATABRICKS_SCHEMA")

def credential_provider():
  config = Config(
    host          = f"https://{server_hostname}",
    client_id     = os.getenv("DATABRICKS_CLIENT_ID"),
    client_secret = os.getenv("DATABRICKS_CLIENT_SECRET"))
  return oauth_service_principal(config)

engine = create_engine(
  url = f"databricks://{server_hostname}?" +
        f"http_path={http_path}&catalog={catalog}&schema={schema}",
  connect_args = {"credentials_provider": credential_provider}
)

# ...

SQLAlchemy v1

Příklady připojení najdete v tomto example.py

SQLAlchemy v2

Příklady připojení najdete v následující části a v souboru sqlalchemy_example.py na GitHubu.

Referenční informace k DBAPI

Další materiály