Az SQLAlchemy használata Azure Databricksben

Az Azure Databricks egy SQLAlchemydialektust biztosít az Azure Databrickshez (az a rendszer, amelyet az SQLAlchemy a különböző típusú adatbázis-API-implementációkkal és adatbázisokkal való kommunikációra használ). Az SQLAlchemy egy Python SQL-eszközkészlet és objektumrelációs mapper (ORM). Az SQLAlchemy jól ismert, nagyvállalati szintű perzisztenciamintákat biztosít, amelyek hatékony és nagy teljesítményű adatbázis-hozzáféréshez lettek kialakítva, egyszerű és Pythonos doménnyelvre átültetve. Lásd: Funkciók és filozófia.

Az Azure Databricks SQLAlchemy-dialektusát telepíteni kell az SQLAlchemy funkcióinak az Azure Databricksben való használatához. Ez a cikk az Azure Databricks 1.0-s és 2.0-s verziójának SQLAlchemy dialektusát ismerteti, amely a Python 4.0.0-s vagy újabb verzióján alapuló Databricks SQL Connectoron alapul.

Követelmények

  • Python >=3.8 és <=3.11 verziót futtató fejlesztőgép.
  • A Databricks azt javasolja, hogy pythonos virtuális környezeteket használjon, például a Python részét képező venv által biztosítottakat. A virtuális környezetek segítségével biztosítható, hogy a Python és a Databricks SQL Connector for Python megfelelő verzióit használja együtt. A virtuális környezetek beállítása és használata a jelen cikk hatókörén kívül esik. További információ: Virtuális környezetek létrehozása.
  • Meglévő fürt vagy SQL Warehouse.

Első lépések

  • Telepítse a databricks-sqlalchemyt az SQLAlchemy v1-hez a pip install databricks-sqlalchemy~=1.0 használatával vagy az SQLAlchemy v2-höz a pip install databricks-sqlalchemyhasználatával. A verzióval kapcsolatos információkért lásd a databricks-sqlalchemy kiadási előzményeit.

  • Gyűjtse össze a használni kívánt fürtre vagy SQL Warehouse-ra vonatkozó alábbi információkat:

    fürt

    • A klaszter kiszolgáló gazdagépneve. Ezt a szerver hosztnév értéket a fürtje Speciális beállítások JDBC/ODBC lapján találja meg.
    • A klaszter HTTP-elérési útja. A HTTP-elérési út értéket a fürt JDBC/ODBC > Speciális beállítások fülén találja meg.

    SQL-raktár

    • Az SQL warehouse kiszolgáló gazdaneve. Ezt az SQL-raktár Kapcsolat részletei lapján található Kiszolgáló állomásnév értékéből szerezheti be.
    • Az SQL Warehouse HTTP-elérési útja. Ezt az SQL Warehouse Kapcsolat részletei lapján található HTTP-elérési út értékből szerezheti be.

Hitelesítés

Az Azure Databricks SQLAlchemy dialektus a Databricks SQL Connector for Python segítségével kapcsolódik, és a(z) connect_args elemben szereplő értékeket továbbítja a csatlakozónak. Támogatja a következő hitelesítési típusokat:

Személyes hozzáférési token hitelesítés

Azure Databricks személyes hozzáférési jogkivonat létrehozásához kövesse a munkaterület-felhasználók személyes hozzáférési jogkivonatainak létrehozása című szakasz lépéseit.

Az SQLAlchemy dialektus hitelesítéséhez használja az alábbi kódrészletet. Ez a kódrészlet feltételezi, hogy a következő környezeti változókat állította be:

  • DATABRICKS_TOKEN állítsa be az Azure Databricks személyes hozzáférési tokenjét.
  • Állítsa be a DATABRICKS_SERVER_HOSTNAMEkomponenst a szerver hosztnév értékére a fürt vagy az SQL tárház számára.
  • DATABRICKS_HTTP_PATH, állítsa be a HTTP-elérési út értékét a klaszteréhez vagy az SQL raktárához.
  • A DATABRICKS_CATALOG-t állítsa be a célkatalógusra a Unity Catalogban.
  • DATABRICKS_SCHEMA, állítsa be a célséma (más néven adatbázis) a Unity Catalogban.

A környezeti változók beállításához tekintse meg az operációs rendszer dokumentációját.

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}"
)

# ...

Az előző engine változóval csatlakozhat a megadott katalógushoz és sémához az Azure Databricks számítási erőforrásán keresztül.

OAuth felhasználó–gép (U2M) hitelesítés

Az OAuth U2M hitelesítés valós idejű emberi bejelentkezést és hozzájárulást használ a célzott Azure Databricks felhasználói fiók hitelesítéséhez. Az ezt az egyes felhőkön támogató Databricks SQL Connector for Python-verziókról lásd: OAuth felhasználó–gép (U2M) hitelesítés.

Az SQLAlchemy dialektust OAuth U2M-mel való hitelesítéshez használja az alábbi kódrészletet. Ez a rész feltételezi, hogy beállítottad a DATABRICKS_SERVER_HOSTNAME, DATABRICKS_HTTP_PATH, DATABRICKS_CATALOG és DATABRICKS_SCHEMA környezeti változókat, a Personal access token authentication című cikkben leírtak szerint.

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"}
)

# ...

Gépről gépre (M2M) történő OAuth-hitelesítés

Az OAuth M2M hitelesítés Azure Databricks service principalként autentikál. Telepítenie kell a Databricks SDK for Python csomagot is (például a pip install databricks-sdk futtatásával). A Databricks SQL Connector for Python és az azt az egyes felhőkben támogató SDK-verziókról lásd: OAuth gép–gép (M2M) hitelesítés.

Az OAuth M2M hitelesítés használatához a következőket hajtsuk végre:

  1. Hozzon létre egy Azure Databricks-szolgáltatásnevet az Azure Databricks-munkaterületen, és hozzon létre egy OAuth-titkos kulcsot a szolgáltatásnévhez. Lásd: Szolgáltatás főfelhasználó hozzáférésének engedélyezése az Azure Databrickshez OAuth használatával.
  2. Adj hozzáférést a szolgáltatásnévnek a klaszteredhez vagy az SQL-adattáradhoz. Lásd: Számítási engedélyek vagy SQL-raktár kezelése.

Az SQLAlchemy dialektussal OAuth M2M-mel történő hitelesítéshez használja az alábbi kódrészletet. A DATABRICKS_SERVER_HOSTNAME, DATABRICKS_HTTP_PATH, DATABRICKS_CATALOG, és DATABRICKS_SCHEMA környezeti változók mellett ez a snippet feltételezi, hogy a következő környezeti változókat állítottad be:

  • DATABRICKS_CLIENT_ID, állítsa be a szolgáltatás főképviselőjének UUID - vagy alkalmazásazonosítóját.
  • DATABRICKS_CLIENT_SECRET, állítsa be a szolgáltatásnév OAuth-titkos kódjának titkos értékét.
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

Kapcsolati példákért tekintse meg ezt a example.py

SQLAlchemy v2

A kapcsolati példákért tekintse meg a következő szakaszt és a GitHub sqlalchemy_example.py fájlt.

DBAPI dokumentációja

További erőforrások