Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.0nebo 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 pro váš cluster.JDBC/ODBC
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
- Ověřování OAuth mezi uživatelem a strojem (U2M)
- Ověřování OAuth mezi počítači (M2M)
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_HOSTNAMEhostitele 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í:
- 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.
- 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
- Databricks-SQLAlchemy v1 GitHub úložiště
- sqlAlchemy v1 README.md
- úložiště Databricks-sqlalchemy v2 GitHubu
- SQLAlchemy v2 README.md