Azure Databricks ile SQLAlchemy kullanma

Azure Databricks, Azure Databricks için bir SQLAlchemydiyalekt (SQLAlchemy'nin çeşitli türlerdeki veritabanı API uygulamaları ve veritabanlarıyla iletişim kurmak için kullandığı sistem) sağlar. SQLAlchemy bir Python SQL araç seti ve Nesne İlişkisel Eşleyici (ORM). SQLAlchemy, verimli ve yüksek performanslı veritabanı erişimi için tasarlanmış, basit ve Python'a özgü bir dilde uyarlanmış, kurumsal düzeyde iyi bilinen kalıcılık desenleri sunar. Bkz. Özellikler ve Felsefe.

Azure Databricks için SQLAlchemy diyalektinin Azure Databricks ile SQLAlchemy özelliklerini kullanabilmesi için yüklenmesi gerekir. Bu makale, Python sürüm 4.0.0 veya üzeri için Databricks SQL Bağlayıcısı'nı temel alan Azure Databricks sürüm 1.0 ve 2.0 için SQLAlchemy diyalektlerini kapsar.

Gereksinimler

  • Python >=3.8 ve <=3.11 çalıştıran bir geliştirme makinesi.
  • Databricks, Venv tarafından sağlanan ve Python ile birlikte gelenler gibi Python sanal ortamlarını kullanmanızı önerir. Sanal ortamlar, Python'ın doğru sürümlerini ve Python için Databricks SQL Bağlayıcısı'nı birlikte kullandığınızdan emin olmanıza yardımcı olur. Sanal ortamların ayarlanması ve kullanılması bu makalenin kapsamı dışındadır. Daha fazla bilgi için bkz . Sanal ortam oluşturma.
  • Mevcut bir küme veya SQL ambarı.

Kullanmaya başlama

  • pip install databricks-sqlalchemy~=1.0 kullanarak SQLAlchemy v1 için databricks-sqlalchemy'yi veya pip install databricks-sqlalchemykullanarak SQLAlchemy v2'yi yükleyin. Sürüm bilgileri için bakınız databricks-sqlalchemy'nin sürüm geçmişi.

  • Kullanmak istediğiniz küme veya SQL ambarı için aşağıdaki bilgileri toplayın:

    Küme

    • Kümenin sunucu ana bilgisayar adı. Bunu, kümenizin sekmesindeki > değerinden alabilirsiniz.
    • Kümenin HTTP yolu. Bunu, kümenizin sekmesindeki > değerinden alabilirsiniz.

    SQL ambarı

    • SQL ambarının sunucu konak adı. Bunu SQL ambarınızın Bağlantı Ayrıntıları sekmesindeki Sunucu Ana Bilgisayar Adı değerinden alabilirsiniz.
    • SQL ambarının HTTP yolu. Bunu SQL ambarınızın Bağlantı Ayrıntıları sekmesindeki HTTP Yolu değerinden alabilirsiniz.

Kimlik Doğrulaması

Azure Databricks için SQLAlchemy lehçesi, bağlantı kurmak için Databricks SQL Connector for Python'u kullanır ve değerleri connect_args konnektöre iletir. Aşağıdaki kimlik doğrulama türlerini destekler:

Kişisel erişim belirteci kimlik doğrulaması

Azure Databricks kişisel erişim belirteci oluşturmak için Çalışma alanı kullanıcıları için kişisel erişim belirteçleri oluşturma bölümünde yer alan adımları izleyin.

SQLAlchemy diyalektinin kimliğini doğrulamak için aşağıdaki kod parçacığını kullanın. Bu kod parçacığı, aşağıdaki ortam değişkenlerini ayarladığınızı varsayar:

  • Azure Databricks kişisel erişim jetonuna DATABRICKS_TOKEN olarak ayarlayın.
  • DATABRICKS_SERVER_HOSTNAMEkümeniz veya SQL ambarınız için Sunucu Host Adı değerine ayarlanır.
  • DATABRICKS_HTTP_PATH, kümeniz veya SQL ambarınız için HTTP Yolu değerini olarak ayarlayın.
  • DATABRICKS_CATALOG, Unity Kataloğu'nda hedef kataloğa atandı.
  • DATABRICKS_SCHEMA, Unity Kataloğu'nda hedef şemaya (veritabanı olarak da bilinir) ayarlanır.

Ortam değişkenlerini ayarlamak için işletim sisteminizin belgelerine bakın.

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

# ...

Azure Databricks işlem kaynağınız aracılığıyla belirtilen kataloğunuza ve şemanıza bağlanmak için önceki engine değişkenini kullanırsınız.

OAuth kullanıcıdan makineye (U2M) kimlik doğrulaması

OAuth U2M kimlik doğrulaması, hedef Azure Databricks kullanıcı hesabını doğrulamak için gerçek zamanlı insan giriş ve onay kullanır. Her bulutta bunu destekleyen Databricks SQL Connector for Python sürümleri için OAuth kullanıcıdan makineye (U2M) kimlik doğrulaması bölümüne bakın.

SQLAlchemy diyalektinin OAuth U2M ile kimlik doğrulamasını yapmak için aşağıdaki kod parçasını kullanın. Bu snippet, DATABRICKS_SERVER_HOSTNAME bölümünde açıklandığı gibi , DATABRICKS_HTTP_PATH, DATABRICKS_CATALOG ve DATABRICKS_SCHEMA çevre değişkenlerini ayarladığınızı varsayar.

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

# ...

OAuth makineler arası (M2M) kimlik doğrulaması

OAuth M2M authentication, Azure Databricks hizmet sorumlusu olarak kimlik doğrular. Ayrıca Python için Databricks SDK'sını da kurmalısınız (örneğin pip install databricks-sdk komutunu çalıştırarak). Databricks SQL Connector for Python ve bunu her bulutta destekleyen SDK sürümleri için OAuth makineden makineye (M2M) doğrulama sayfasına bakınız.

OAuth M2M doğrulamasını kullanmak için aşağıdakileri yapın:

  1. Azure Databricks çalışma alanınızda bir Azure Databricks hizmet sorumlusu oluşturun ve bu hizmet sorumlusu için bir OAuth gizli anahtarı oluşturun. Bkz. OAuth ile Azure Databricks'e hizmet sorumlusu erişimini yetkilendirme.
  2. Bu hizmet sorumlusuna kümenize veya SQL deponuza erişim verin. Bkz Hesaplama izinleri veya SQL veri deposu yönetme.

SQLAlchemy diyalektiyle OAuth M2M kullanarak kimlik doğrulamak için aşağıdaki kod parçasını kullanın. DATABRICKS_HTTP_PATH, DATABRICKS_CATALOG, DATABRICKS_SCHEMA ve DATABRICKS_SERVER_HOSTNAME ortam değişkenlerine ek olarak, bu snippet aşağıdaki ortam değişkenlerini ayarladığınızı varsayar:

  • DATABRICKS_CLIENT_IDdeğerini hizmet sorumlusunun UUID veya Uygulama Kimliği değerine ayarlayın.
  • DATABRICKS_CLIENT_SECRET, hizmet principal'inin OAuth gizli anahtarı için Gizli değerine ayarlayın.
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

Bağlantı örnekleri için bu example.py bakın

SQLAlchemy v2

Bağlantı örnekleri için aşağıdaki bölüme ve GitHub'daki sqlalchemy_example.py dosyasına bakın.

DBAPI referansı

  • Databricks-sqlalchemy v1 GitHub deposunu
  • SQLAlchemy v1 README.md
  • Databricks-sqlalchemy v2 GitHub deposunu
  • sqlalchemy v2 README.md

Ek kaynaklar