Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
Este recurso está em pré-visualização.
ODBC (Open Database Connectivity) é um padrão amplamente adotado que permite que aplicações clientes se liguem e trabalhem com dados provenientes de bases de dados e plataformas de big data.
O Microsoft ODBC Driver for Fabric Data Engineering permite-lhe ligar, consultar e gerir cargas de trabalho Spark no Fabric com a fiabilidade e simplicidade do padrão ODBC. Construído sobre as APIs Livy da Fabric, o driver fornece conectividade Spark SQL segura e flexível para as suas aplicações compatíveis com C/C++, .NET, Python e outras compatíveis com ODBC no Linux.
Principais características
- Compatível com ODBC 3.x: Implementação completa da especificação ODBC 3.x.
- Autenticação Microsoft Entra ID: Múltiplos fluxos de autenticação, incluindo CLI do Azure, credenciais de clientes, autenticação baseada em certificados e autenticação de token de acesso.
- Suporte para consultas Spark SQL: Execução direta de instruções SQL Spark.
-
Suporte abrangente de tipos de dados: Suporte para todos os tipos de dados SQL do Spark, incluindo tipos complexos (
ARRAY,MAP, eSTRUCT). - Reutilização de sessões: Gestão de sessões integrada para melhorar o desempenho.
- Suporte a tabelas grandes: Tratamento otimizado para conjuntos de resultados grandes com tamanhos de página configuráveis.
- Prefetch assíncrono: Carregamento de dados em segundo plano para melhorar o desempenho.
- Suporte a proxy: Configuração de proxy HTTP para ambientes empresariais.
- Suporte multi-esquema para casas de lago: Ligue-se a um esquema específico dentro de uma casa de lago.
Note
No Apache Spark de código aberto, base de dados e esquema são usados como sinónimos. Por exemplo, correr SHOW SCHEMAS ou SHOW DATABASES num caderno Fabric devolve o mesmo resultado: uma lista de todos os esquemas na casa do lago.
Pré-requisitos
Antes de usar o Microsoft ODBC Driver for Microsoft Fabric Data Engineering no Linux, certifique-se de que tem os seguintes pré-requisitos:
- Sistema operativo: Ubuntu 22.04 ou posterior, Debian 11 ou posterior, ou Red Hat Enterprise Linux (RHEL) 8 ou posterior em x86-64.
-
unixODBC: O gestor de drivers ODBC para Linux. Instale os
unixodbcpacotes e.unixodbc-dev - Acesso Fabric: Acesso a um espaço de trabalho Fabric.
- Credenciais Microsoft Entra ID: Credenciais apropriadas para autenticação.
- IDs de espaço de trabalho e casa do lago: Os identificadores GUID para o seu espaço de trabalho Fabric e a casa do lago.
- CLI do Azure (opcional): Obrigatória quando usa autenticação CLI do Azure.
Descarregar e instalar no Linux
O Microsoft ODBC Driver for Microsoft Fabric Data Engineering versão 1.0.0 está disponível em pré-visualização pública.
Para instalar o driver:
Extrair
ms-sparksql-odbc-linux-1.0.0.zip.Abra um terminal no diretório extraído.
Instale o pacote Debian:
sudo dpkg -i microsoft-fabric-odbc-driver-1.0.0-Linux.deb
O pacote instala os seguintes ficheiros:
| Ficheiro | Localização instalada |
|---|---|
| Biblioteca de pilotos | /usr/lib/libmicrosoftfabricodbc.so |
| Modelo de registo de pilotos | /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template |
| Modelo de configuração DSN | /usr/share/microsoft-fabric-odbc-driver/odbc.ini.template |
| License | /usr/share/doc/microsoft-fabric-odbc-driver/LICENSE |
| Guia de utilização | /usr/share/doc/microsoft-fabric-odbc-driver/USAGE_Linux.md |
Driver de registo manual
O pacote regista automaticamente o driver com unixODBC. Para registar o driver manualmente, execute:
sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template
Verifique a instalação
Verifique se o driver está registado e que a biblioteca está instalada:
odbcinst -q -d
ls -la /usr/lib/libmicrosoftfabricodbc.so
O odbcinst comando deve indicar [Microsoft ODBC Driver for Microsoft Fabric Data Engineering].
Desinstalar o driver
Para desinstalar o driver, execute o seguinte comando:
sudo dpkg -r microsoft-fabric-odbc-driver
Este comando remove os ficheiros do driver e desregista o driver do unixODBC.
Exemplo de início rápido
Os exemplos seguintes ligam-se ao Fabric e executam uma consulta SQL no Spark. Cumpra os pré-requisitos e instale o driver antes de executar um exemplo.
Exemplo de Python
import pyodbc
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;"
)
conn = pyodbc.connect(connection_string, timeout=30)
cursor = conn.cursor()
cursor.execute("SELECT 'Hello from Fabric!' AS message")
row = cursor.fetchone()
print(row.message)
conn.close()
Exemplo em C/C++
#include <sql.h>
#include <sqlext.h>
#include <iostream>
int main() {
SQLHENV henv = SQL_NULL_HENV;
SQLHDBC hdbc = SQL_NULL_HDBC;
SQLHSTMT hstmt = SQL_NULL_HSTMT;
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
const char* connectionString =
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;";
SQLRETURN result = SQLDriverConnect(
hdbc,
NULL,
(SQLCHAR*)connectionString,
SQL_NTS,
NULL,
0,
NULL,
SQL_DRIVER_NOPROMPT);
if (SQL_SUCCEEDED(result)) {
std::cout << "Connected successfully!" << std::endl;
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
result = SQLExecDirect(
hstmt,
(SQLCHAR*)"SELECT 'Hello from Fabric!' AS message",
SQL_NTS);
if (SQL_SUCCEEDED(result)) {
char message[256];
SQLLEN indicator;
while (SQLFetch(hstmt) == SQL_SUCCESS) {
SQLGetData(
hstmt,
1,
SQL_C_CHAR,
message,
sizeof(message),
&indicator);
std::cout << message << std::endl;
}
}
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
}
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
Constrói e executa o exemplo:
g++ -o fabric_test fabric_test.cpp -lodbc -std=c++17
./fabric_test
Exemplo do .NET
using System.Data.Odbc;
string connectionString =
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};" +
"WorkspaceId=<workspace-id>;" +
"LakehouseId=<lakehouse-id>;" +
"AuthFlow=AZURE_CLI;";
using var connection = new OdbcConnection(connectionString);
await connection.OpenAsync();
Console.WriteLine("Connected successfully!");
using var command = new OdbcCommand(
"SELECT 'Hello from Fabric!' AS message",
connection);
using var reader = await command.ExecuteReaderAsync();
if (await reader.ReadAsync())
{
Console.WriteLine(reader.GetString(0));
}
Formato da cadeia de ligação
Cadeia básica de ligação
Use o seguinte formato de cadeia de ligação:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};<parameter1>=<value1>;<parameter2>=<value2>;...
Componentes da corda de ligação
| Component | Description | Exemplo |
|---|---|---|
DRIVER |
Identificador de driver ODBC | {Microsoft ODBC Driver for Microsoft Fabric Data Engineering} |
WorkspaceId |
Identificador de espaço de trabalho Fabric (GUID) | 4bbf89a8-66bb-443f-91af-df31e6a7560b |
LakehouseId |
Identificador de Fabric lakehouse (GUID) | d8faa650-1343-496b-b9cc-d4168a676f90 |
AuthFlow |
Método de autenticação |
AZURE_CLI, CLIENT_CREDENTIAL, CLIENT_CERTIFICATEou ACCESS_TOKEN |
Exemplo de cadeias de conexão
Ligação básica
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI
Ligação com opções de desempenho
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;ReuseSession=true;LargeTableSupport=true;PageSizeBytes=18874368
Ligação com a exploração florestal
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LogLevel=DEBUG;LogFile=/tmp/odbc_driver.log
Autenticação
O Microsoft ODBC Driver for Microsoft Fabric Data Engineering suporta múltiplos métodos de autenticação através do Microsoft Entra ID. Configure a autenticação usando o AuthFlow parâmetro na cadeia de ligação ou DSN.
Métodos de autenticação
AuthFlow valor |
Description |
|---|---|
AZURE_CLI |
Desenvolvimento utilizando credenciais do CLI do Azure |
CLIENT_CREDENTIAL |
Principal de serviço com um segredo do cliente |
CLIENT_CERTIFICATE |
Principal de serviço com certificado |
ACCESS_TOKEN |
Token de acesso pré-adquirido ao portador |
Note
A autenticação interativa do navegador não está disponível em servidores Linux headless. Use CLI do Azure, credenciais de cliente, autenticação baseada em certificados ou token de acesso.
Autenticação da CLI do Azure
Use autenticação CLI do Azure para desenvolvimento e aplicações interativas.
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;"
"Scope=https://api.fabric.microsoft.com/.default;"
)
conn = pyodbc.connect(connection_string)
Antes de se ligar, verifique se a CLI do Azure está instalada e inicie sessão:
az --version
az login
Para instalar o CLI do Azure no Debian ou Ubuntu, use o gestor de pacotes:
sudo apt-get update
sudo apt-get install -y azure-cli
Autenticação de credenciais do cliente
Use autenticação de credenciais do cliente para serviços automatizados e trabalhos em segundo plano.
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=CLIENT_CREDENTIAL;"
f"TenantId={tenant_id};"
f"ClientId={client_id};"
f"ClientSecret={client_secret};"
)
Forneça os parâmetros a seguir:
-
TenantId: O ID do inquilino da Microsoft Entra. -
ClientId: O ID do aplicativo (cliente). -
ClientSecret: O segredo do cliente.
Armazena segredos num armazenamento secreto seguro ou variáveis de ambiente. Não guarde segredos em cadeias de ligação em texto simples ou ficheiros INI.
Autenticação baseada em certificado
Use autenticação baseada em certificados para aplicações empresariais que requerem credenciais de certificado.
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=CLIENT_CERTIFICATE;"
"TenantId=<tenant-id>;"
"ClientId=<client-id>;"
"CertificatePath=/path/to/cert.pfx;"
"CertificatePassword=<password>;"
)
Forneça os parâmetros a seguir:
-
TenantId: O ID do inquilino da Microsoft Entra. -
ClientId: O ID do aplicativo (cliente). -
CertificatePath: O caminho para o ficheiro de certificados PFX ou PKCS12. -
CertificatePassword: A palavra-passe do certificado.
Autenticação de token de acesso
Use autenticação de token de acesso quando a sua aplicação adquirir um token através de outro mecanismo.
access_token = acquire_token_from_custom_source()
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=ACCESS_TOKEN;"
f"AccessToken={access_token};"
)
Parâmetros de configuração
Parâmetros necessários
Inclua estes parâmetros em cada cadeia de ligação:
| Parâmetro | Tipo | Description | Exemplo |
|---|---|---|---|
WorkspaceId |
Identificador Único Universal (UUID) | Identificador de espaço de trabalho Fabric | 4bbf89a8-... |
LakehouseId |
Identificador Único Universal (UUID) | Identificador de Fabric lakehouse | d8faa650-... |
AuthFlow |
String | Tipo de fluxo de autenticação | AZURE_CLI |
Parâmetros opcionais
Definições de ligação
| Parâmetro | Tipo | Default | Description |
|---|---|---|---|
Database |
String | None | Base de dados específica a que se deve ligar |
Scope |
String | https://api.fabric.microsoft.com/.default |
Âmbito OAuth |
Configurações de desempenho
| Parâmetro | Tipo | Default | Description |
|---|---|---|---|
ReuseSession |
booleano | true |
Reutilizar uma sessão Spark existente |
LargeTableSupport |
booleano | false |
Permitir otimizações para grandes conjuntos de resultados |
EnableAsyncPrefetch |
booleano | false |
Ativar pré-carregamento de dados em segundo plano |
PageSizeBytes |
Integer |
18874368 (18 MB) |
Tamanho da página para a paginação dos resultados de 1 a 18 MB |
Configurações de registo
| Parâmetro | Tipo | Default | Description |
|---|---|---|---|
LogLevel |
String | INFO |
Nível logarítmico: TRACE, DEBUG, INFO, WARN, ou ERROR |
LogFile |
String | odbc_driver.log |
Caminho absoluto ou relativo do ficheiro de registo |
Definições de proxy
| Parâmetro | Tipo | Default | Description |
|---|---|---|---|
UseProxy |
booleano | false |
Ativar um proxy |
ProxyHost |
String | None | Nome de host proxy |
ProxyPort |
Integer | None | Porta proxy |
ProxyUsername |
String | None | Nome de utilizador de autenticação por proxy |
ProxyPassword |
String | None | Palavra-passe de autenticação por proxy |
Configuração DSN
No Linux, configure os nomes das fontes de dados (DSNs) em ficheiros INI em vez do registo do Windows.
| Ficheiro | Scope | Access |
|---|---|---|
/etc/odbc.ini |
DSNs a nível de sistema | Requer sudo |
~/.odbc.ini |
DSNs específicas para utilizadores | Apenas utilizador atual |
Criar um DSN
Copie o modelo instalado:
cp /usr/share/microsoft-fabric-odbc-driver/odbc.ini.template ~/.odbc.ini
Edite ~/.odbc.ini com os detalhes do seu espaço de trabalho Fabric:
[FabricDSN]
Description = Microsoft Fabric Data Engineering
Driver = Microsoft ODBC Driver for Microsoft Fabric Data Engineering
WorkspaceId = <workspace-id>
LakehouseId = <lakehouse-id>
AuthFlow = AZURE_CLI
LogLevel = INFO
# LogFile = /tmp/fabric_odbc.log
# LargeTableSupport = true
# ReuseSession = true
Verificar a DSN
Liste as DSNs configuradas e depois teste a ligação:
odbcinst -q -s
isql -v FabricDSN
O isql comando requer as ferramentas de linha de comandos unixODBC.
Usar uma DSN nas aplicações
conn = pyodbc.connect("DSN=FabricDSN")
using var connection = new OdbcConnection("DSN=FabricDSN");
await connection.OpenAsync();
SQLRETURN result = SQLConnect(
hdbc,
(SQLCHAR*)"FabricDSN",
SQL_NTS,
NULL,
0,
NULL,
0);
Exemplos de utilização
Testar uma ligação com isql
Inicie uma sessão interativa de SQL:
isql -v FabricDSN
Execute uma única consulta:
echo "SELECT 1 AS test" | isql -v FabricDSN -b
Trabalho com grandes conjuntos de resultados
import pyodbc
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;"
"LargeTableSupport=true;"
"PageSizeBytes=18874368;"
"EnableAsyncPrefetch=1;"
)
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
cursor.execute("SELECT * FROM large_table")
row_count = 0
while True:
rows = cursor.fetchmany(1000)
if not rows:
break
for row in rows:
row_count += 1
if row_count % 10000 == 0:
print(f"Processed {row_count} rows")
print(f"Total rows processed: {row_count}")
conn.close()
Descobrir esquemas e tabelas
import pyodbc
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
cursor.execute("SHOW TABLES")
for table in cursor.fetchall():
print(table)
cursor.execute("DESCRIBE employees")
for column in cursor.fetchall():
print(column)
cursor.execute("SHOW SCHEMAS")
for schema in cursor.fetchall():
print(schema)
conn.close()
Mapeamento de tipos de dados
O driver mapeia os tipos de dados SQL do Spark para tipos SQL ODBC:
| Tipo Spark SQL | Tipo ODBC SQL | Tipo C/C++ | Tipo Python | Tipo .NET |
|---|---|---|---|---|
BOOLEAN |
SQL_BIT |
SQLCHAR |
bool |
bool |
BYTE |
SQL_TINYINT |
SQLSCHAR |
int |
sbyte |
SHORT |
SQL_SMALLINT |
SQLSMALLINT |
int |
short |
INT |
SQL_INTEGER |
SQLINTEGER |
int |
int |
LONG |
SQL_BIGINT |
SQLBIGINT |
int |
long |
FLOAT |
SQL_REAL |
SQLREAL |
float |
float |
DOUBLE |
SQL_DOUBLE |
SQLDOUBLE |
float |
double |
DECIMAL |
SQL_DECIMAL |
SQLCHAR* |
decimal.Decimal |
decimal |
STRING |
SQL_VARCHAR |
SQLCHAR* |
str |
string |
VARCHAR(n) |
SQL_VARCHAR |
SQLCHAR* |
str |
string |
CHAR(n) |
SQL_CHAR |
SQLCHAR* |
str |
string |
BINARY |
SQL_BINARY |
SQLCHAR* |
bytes |
byte[] |
DATE |
SQL_TYPE_DATE |
SQL_DATE_STRUCT |
datetime.date |
DateTime |
TIMESTAMP |
SQL_TYPE_TIMESTAMP |
SQL_TIMESTAMP_STRUCT |
datetime.datetime |
DateTime |
ARRAY |
SQL_VARCHAR |
SQLCHAR* |
Cadeia JSON | string |
MAP |
SQL_VARCHAR |
SQLCHAR* |
Cadeia JSON | string |
STRUCT |
SQL_VARCHAR |
SQLCHAR* |
Cadeia JSON | string |
Diferenças de plataforma
| Feature | Windows | Linux |
|---|---|---|
| Gestor de pilotos | Gestor de Controladores Microsoft ODBC | unixODBC |
| Binário do driver | microsoftfabricodbc.dll |
libmicrosoftfabricodbc.so |
| Configuração DSN | Registo e interface gráfica do Windows |
/etc/odbc.ini e ~/.odbc.ini |
| Registo de pilotos | Registo e odbcad32.exe |
odbcinst -i -d -f |
| Cliente HTTP | WinHTTP | libcurl |
| TLS | Suporte integrado para Windows | OpenSSL |
| Autenticação de certificados | Windows CryptoAPI | OpenSSL com ficheiros RS256 e PEM ou PFX |
| Autenticação interativa | Janela do navegador | Não disponível em servidores headless |
| Embalagem | Programa de instalação MSI | Pacote Linux |
Solução de problemas
Condutor não encontrado
Problema: A ligação falha com [IM002] Data source name not found and no default driver specified.
Soluções:
- Verifique o registo do condutor executando
odbcinst -q -d. - Confirma que isso
/usr/lib/libmicrosoftfabricodbc.soexiste. - Registe o condutor executando
sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template. - Reinstale o pacote executando
sudo dpkg -i microsoft-fabric-odbc-driver-1.0.0-Linux.deb.
DSN não encontrado
Problema: A ligação falha com [IM002] Data source name not found.
Soluções:
- Verifique a configuração da DSN executando
odbcinst -q -s. - Verifica isso
~/.odbc.iniou/etc/odbc.inicontém a secção DSN. - Certifique-se de que o
Drivervalor corresponde exatamente ao nome do condutor registado.
Falhas de ligação
Problema: O driver não consegue ligar-se ao Fabric.
Soluções:
- Verifica se o ID do workspace e o ID do lakehouse são GUIDs válidos.
- Verifique a autenticação do CLI do Azure executando
az account show. - Certifique-se de que tem as permissões necessárias para o espaço de trabalho do Fabric.
- Verifique a conectividade de rede e as definições do proxy.
Erros de autenticação
Problema: A autenticação CLI do Azure falha.
Soluções:
- Corre
az loginpara atualizar as tuas credenciais. - Defina a subscrição correta executando
az account set --subscription <subscription-id>. - Verifique o token executando
az account get-access-token --resource https://api.fabric.microsoft.com. - Certifique-se de que a sua conta tem as permissões necessárias para o espaço de trabalho Fabric.
Erros de biblioteca partilhada
Problema: O condutor reporta error while loading shared libraries: libmicrosoftfabricodbc.so.
Soluções:
- Reinstale o pacote executando
sudo dpkg -i microsoft-fabric-odbc-driver-1.0.0-Linux.deb. - Confirma que isso
/usr/lib/libmicrosoftfabricodbc.soexiste. - Executa
sudo ldconfigpara atualizar a cache da biblioteca partilhada.
Tempos limite de consulta
Problema: As consultas esgotam em tabelas grandes.
Soluções:
- Adicionar
LargeTableSupport=trueà cadeia de conexão. - Ajusta
PageSizeBytespelo tamanho do resultado. - Adicionar
EnableAsyncPrefetch=1à cadeia de conexão. - Use uma
LIMITcláusula para restringir o tamanho do resultado.
Ativar registo de atividades
Permitir o registo detalhado numa DSN:
[FabricDSN]
LogLevel = DEBUG
LogFile = /tmp/fabric_odbc_debug.log
Alternativamente, adicione parâmetros de registo à cadeia de ligação:
LogLevel=DEBUG;LogFile=/tmp/fabric_odbc_debug.log;
O driver suporta os seguintes níveis logarítmicos:
-
TRACE: Inclui todas as chamadas API. -
DEBUG: Inclui informações detalhadas de depuração. -
INFO: Inclui informação geral e é o padrão. -
WARN: Inclui apenas avisos. -
ERROR: Inclui apenas erros.
Ativar o rastreio unixODBC
Para diagnósticos de chamadas ODBC de baixo nível, adicione a seguinte configuração a /etc/odbcinst.ini:
[ODBC]
Trace = yes
TraceFile = /tmp/odbc_trace.log
Desligue o rastreamento quando terminar a resolução de problemas para evitar sobrecarga desnecessária de desempenho.