Usar o SQLAlchemy com a Databricks
A Databricks fornece um dialeto SQLAlchemy (o sistema que o SQLAlchemy usa para se comunicar com vários tipos de implementações de API de banco de dados e bancos de dados) para a Databricks. O SQLAlchemy é um kit de ferramentas SQL Python e um mapeador objeto-relacional (ORM). O SQLAlchemy fornece um conjunto de padrões de persistência de nível corporativo conhecidos, projetados para acesso eficiente e de alto desempenho ao banco de dados, adaptados a uma linguagem de domínio simples e Pythonic. Ver recurso e Filosofia.
O dialeto SQLAlchemy para Databricks precisa ser instalado para usar o recurso SQLAlchemy com Databricks. Este artigo aborda o dialeto SQLAlchemy para Databricks versão 1.0 e 2.0, que será baseado no conector Databricks SQL para Python versão 4.0.0 ou superior.
Requisitos
- Uma máquina de desenvolvimento executando Python >=3.8 e <=3.11.
- A Databricks recomenda que o senhor use ambientes virtuais Python, como os fornecidos pelo venv que estão incluídos no Python. Os ambientes virtuais ajudam a garantir que o senhor esteja usando as versões corretas do Python e do Databricks SQL Connector for Python juntos. A configuração e o uso de ambientes virtuais estão fora do escopo deste artigo. Para obter mais informações, consulte Criação de ambientes virtuais.
- Um clustering existente ou SQL warehouse.
Começar
-
Instale databricks-sqlalchemy para SQLAlchemy v1 usando
pip install databricks-sqlalchemy~=1.0
ou para SQLAlchemy v2 usandopip install databricks-sqlalchemy
. Para obter informações sobre a versão, consulte o histórico de versões do databricks-sqlalchemy. -
Reúna as seguintes informações para o clustering ou SQL warehouse que o senhor deseja usar:
- Cluster
- SQL warehouse
-
The server hostname of the cluster. You can get this from the Server Hostname value in the Advanced Options > JDBC/ODBC tab for your cluster.
-
The HTTP path of the cluster. You can get this from the HTTP Path value in the Advanced Options > JDBC/ODBC tab for your cluster.
-
The server hostname of the SQL warehouse. You can get this from the Server Hostname value in the Connection Details tab for your SQL warehouse.
-
The HTTP path of the SQL warehouse. You can get this from the HTTP Path value in the Connection Details tab for your SQL warehouse.
Autenticação
O dialeto SQLAlchemy para Databricks Databricks é compatível com a autenticação de tokens de acesso pessoal.
Para criar tokens de acesso pessoal Databricks, siga as etapas em Databricks acesso pessoal tokens para usuários workspace.
Para autenticar o dialeto SQLAlchemy, use o seguinte trecho de código. Esse snippet pressupõe que o senhor tenha definido a seguinte variável de ambiente:
DATABRICKS_TOKEN
, definido como os tokens de acesso pessoal Databricks.DATABRICKS_SERVER_HOSTNAME
definido como o valor do Server Hostname para seu clustering ou SQL warehouse.DATABRICKS_HTTP_PATH
Defina o valor do caminho HTTP para seu clustering ou SQL warehouse.DATABRICKS_CATALOG
definido como o catálogo de destino no Unity Catalog.DATABRICKS_SCHEMA
definido para o esquema de destino (também conhecido como banco de dados) no Unity Catalog.
Para definir variáveis de ambiente, consulte a documentação do sistema operacional.
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}"
)
# ...
O senhor usa a variável engine
anterior para se conectar ao catálogo e ao esquema especificados por meio do recurso Databricks compute .
SQLAlchemy v1
Para exemplos de conexão, consulte este example.py
SQLAlchemy v2
Para obter exemplos de conexão, consulte a seção a seguir e o arquivo sqlalchemy_example.py no GitHub.
Referência do DBAPI
- Repositório GitHub databricks-sqlalchemy v1
- SQLAlchemy v1 README.md
- Repositório databricks-sqlalchemy v2 do GitHub
- SQLAlchemy v2 README.md