Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Esse recurso está na versão prévia.
O ODBC (Open Database Connectivity) é um padrão amplamente adotado que permite que os aplicativos cliente se conectem e trabalhem com dados de bancos de dados e plataformas de Big Data.
O driver Microsoft ODBC para Engenharia de Dados Fabric permite conectar, consultar e gerenciar cargas de trabalho Spark no Fabric com a confiabilidade e simplicidade do padrão ODBC. Construído sobre as APIs Livy da Fabric, o driver oferece conectividade Spark SQL segura e flexível para suas aplicações compatíveis com C/C++, .NET, Python e outras compatíveis com ODBC no Linux.
Características principais
- 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, baseada em certificados e autenticação de token de acesso.
- Suporte a consultas SQL do Spark: Execução direta das instruções SQL do 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: Gerenciamento de sessões integrado para melhorar o desempenho.
- Suporte a tabelas grandes: Tratamento otimizado para conjuntos de resultados grandes com tamanhos de página configuráveis.
- Prefeição assíncrona: carregamento de dados em segundo plano para melhorar o desempenho.
- Suporte a proxy: Configuração de proxy HTTP para ambientes empresariais.
- Suporte a multi-esquema para casa de lago: Conecte-se a um esquema específico dentro de uma casa de lago.
Note
No Apache Spark de software livre, o banco de dados e o esquema são usados sinônimos. Por exemplo, executando SHOW SCHEMAS ou SHOW DATABASES em um notebook Fabric retorna o mesmo resultado: uma lista de todos os esquemas na casa do lago.
Pré-requisitos
Antes de usar o driver Microsoft ODBC para Microsoft Fabric Data Engineering no Linux, certifique-se de cumprir os seguintes pré-requisitos:
- Sistema operacional: Ubuntu 22.04 ou posterior, Debian 11 ou posterior, ou Red Hat Enterprise Linux (RHEL) 8 ou posterior em x86-64.
-
unixODBC: O gerenciador de drivers ODBC para Linux. Instale os
unixodbcpacotes e.unixodbc-dev - Acesso Fabric: Acesso a um espaço de trabalho Fabric.
- Credenciais do Microsoft Entra ID: Credenciais apropriadas para autenticação.
- IDs de espaço de trabalho e casa do lago: Os identificadores GUID para seu espaço de trabalho Fabric e casa do lago.
- CLI do Azure (opcional): Exigido quando você usa autenticação CLI do Azure.
Baixe e instale no Linux
O driver Microsoft ODBC para Microsoft Fabric Data Engineering versão 1.0.0 está disponível em prévia 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 arquivos:
| File | Local instalado |
|---|---|
| Biblioteca de pilotos | /usr/lib/libmicrosoftfabricodbc.so |
| Modelo de registro de pilotos | /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template |
| Template de configuração DSN | /usr/share/microsoft-fabric-odbc-driver/odbc.ini.template |
| License | /usr/share/doc/microsoft-fabric-odbc-driver/LICENSE |
| Guia de uso | /usr/share/doc/microsoft-fabric-odbc-driver/USAGE_Linux.md |
Driver de registro manual
O pacote registra automaticamente o driver com unixODBC. Para registrar o driver manualmente, execute:
sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template
Verificar a instalação
Verifique se o driver está registrado e que a biblioteca está instalada:
odbcinst -q -d
ls -la /usr/lib/libmicrosoftfabricodbc.so
O odbcinst comando deve listar [Microsoft ODBC Driver for Microsoft Fabric Data Engineering].
Desinstale o driver
Para desinstalar o driver, execute o seguinte comando:
sudo dpkg -r microsoft-fabric-odbc-driver
Esse comando remove os arquivos do driver e desregistra o driver do unixODBC.
Exemplo de início rápido
Os exemplos a seguir conectam-se ao Fabric e executam uma consulta SQL do Spark. Complete os pré-requisitos e instale o driver antes de rodar 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;
}
Construa e execute o exemplo:
g++ -o fabric_test fabric_test.cpp -lodbc -std=c++17
./fabric_test
Exemplo de .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 conexão
Cadeia de conexão básica
Use o seguinte formato de cadeia de conexão:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};<parameter1>=<value1>;<parameter2>=<value2>;...
Componentes da cadeia de conexão
| Componente | Description | Example |
|---|---|---|
DRIVER |
Identificador do 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 Fabric da casa do lago (GUID) | d8faa650-1343-496b-b9cc-d4168a676f90 |
AuthFlow |
Método de autenticação |
AZURE_CLI, CLIENT_CREDENTIAL, CLIENT_CERTIFICATEou ACCESS_TOKEN |
Exemplos de cadeias de conexão
Conexão básica
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI
Conexã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
Conexão com a exploração de madeira
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
Authentication
O Microsoft ODBC Driver for Microsoft Fabric Data Engineering suporta múltiplos métodos de autenticação por meio do Microsoft Entra ID. Configure a autenticação usando o AuthFlow parâmetro na cadeia de conexão ou DSN.
Métodos de autenticação
AuthFlow Valor |
Description |
|---|---|
AZURE_CLI |
Desenvolvimento usando credenciais da CLI do Azure |
CLIENT_CREDENTIAL |
Principal de serviço com um segredo de cliente |
CLIENT_CERTIFICATE |
Principal de serviço com certificado |
ACCESS_TOKEN |
Token de acesso do portador pré-adquirido |
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 conectar, verifique se a CLI do Azure está instalada e faça login:
az --version
az login
Para instalar o CLI do Azure no Debian ou Ubuntu, use o gerenciador de pacotes:
sudo apt-get update
sudo apt-get install -y azure-cli
Autenticação de credenciais do cliente
Use autenticação de credenciais de clientes 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 tenant da Microsoft Entra. -
ClientId: A ID do aplicativo (cliente). -
ClientSecret: O segredo do cliente.
Armazene segredos em um armazenamento secreto seguro ou variáveis de ambiente. Não armazene segredos em cadeias de conexão em texto simples ou arquivos INI.
Autenticação baseada em certificado
Use autenticação baseada em certificado para aplicações empresariais que exigem 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 tenant da Microsoft Entra. -
ClientId: A ID do aplicativo (cliente). -
CertificatePath: O caminho para o arquivo de certificados PFX ou PKCS12. -
CertificatePassword: A senha do certificado.
Autenticação de token de acesso
Use autenticação de token de acesso quando sua aplicação adquirir um token por 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 conexão:
| Parâmetro | Tipo | Description | Example |
|---|---|---|---|
WorkspaceId |
Identificador Único Universal (UUID) | Identificador de workspace do 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
Configurações de conexão
| Parâmetro | Tipo | Padrão | Description |
|---|---|---|---|
Database |
String | None | Banco de dados específico ao qual se conectar |
Scope |
String | https://api.fabric.microsoft.com/.default |
Escopo do OAuth |
Configurações de desempenho
| Parâmetro | Tipo | Padrão | Description |
|---|---|---|---|
ReuseSession |
booleano | true |
Reutilize uma sessão Spark existente |
LargeTableSupport |
booleano | false |
Habilitar otimizações para grandes conjuntos de resultados |
EnableAsyncPrefetch |
booleano | false |
Habilitar pré-carregamento de dados em segundo plano |
PageSizeBytes |
Número inteiro |
18874368 (18 MB) |
Tamanho da página para paginação de resultados de 1 a 18 MB |
Configurações de registro
| Parâmetro | Tipo | Padrão | Description |
|---|---|---|---|
LogLevel |
String | INFO |
Nível logarítmico: TRACE, DEBUG, INFO, WARN, ou ERROR |
LogFile |
String | odbc_driver.log |
Caminho absoluto ou relativo do arquivo logarítmico |
Configurações de proxy
| Parâmetro | Tipo | Padrão | Description |
|---|---|---|---|
UseProxy |
booleano | false |
Ativar um proxy |
ProxyHost |
String | None | Nome do host proxy |
ProxyPort |
Número inteiro | None | Porta de proxy |
ProxyUsername |
String | None | Nome de usuário de autenticação por proxy |
ProxyPassword |
String | None | Senha de autenticação de proxy |
Configuração de DSN
No Linux, configure nomes de fontes de dados (DSNs) em arquivos INI em vez do registro do Windows.
| File | Scope | Acesso |
|---|---|---|
/etc/odbc.ini |
DSNs em todo o sistema | Requer sudo |
~/.odbc.ini |
DSNs específicas para usuários | Somente usuário 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
Verifique a DSN
Liste as DSNs configuradas e então teste a conexão:
odbcinst -q -s
isql -v FabricDSN
O isql comando requer as ferramentas de linha de comando unixODBC.
Use uma DSN em 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 uso
Teste uma conexão com o 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()
Descubra 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 tipo de dados
O driver mapeia tipos de dados SQL do Spark para tipos SQL ODBC:
| Tipo Spark SQL | Tipo ODBC SQL | Tipo C/C++ | Tipo do Python | Tipo de .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 de caracteres JSON | string |
MAP |
SQL_VARCHAR |
SQLCHAR* |
cadeia de caracteres JSON | string |
STRUCT |
SQL_VARCHAR |
SQLCHAR* |
cadeia de caracteres JSON | string |
Diferenças de plataforma
| Característica | Windows | Linux |
|---|---|---|
| Gerente de pilotos | Gerenciador de Drivers Microsoft ODBC | unixODBC |
| Binário do driver | microsoftfabricodbc.dll |
libmicrosoftfabricodbc.so |
| Configuração de DSN | Registro e interface gráfica do Windows |
/etc/odbc.ini e ~/.odbc.ini |
| Registro de pilotos | Registro e odbcad32.exe |
odbcinst -i -d -f |
| Cliente HTTP | WinHTTP | libcurl |
| TLS | Suporte embutido para Windows | OpenSSL |
| Autenticação de certificado | Windows CryptoAPI | OpenSSL com arquivos RS256 e PEM ou PFX |
| Autenticação interativa | Janela do navegador | Não disponível em servidores headless |
| Embalagem | Instalador MSI | Pacote Linux |
Troubleshooting
Motorista não encontrado
Problema: A conexão falha com [IM002] Data source name not found and no default driver specified.
Soluções:
- Verifique o registro do motorista executando
odbcinst -q -d. - Verifique se existe
/usr/lib/libmicrosoftfabricodbc.so. - Registre o motorista 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 conexão falha com [IM002] Data source name not found.
Soluções:
- Verifique a configuração da DSN executando
odbcinst -q -s. - Verifique isso
~/.odbc.iniou/etc/odbc.inicontém a seção DSN. - Certifique-se de que o
Drivervalor corresponda exatamente ao nome do motorista registrado.
Falhas na conexão
Problema: O driver não consegue se conectar ao Fabric.
Soluções:
- Verifique 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 showo arquivo . - Certifique-se de ter as permissões necessárias para o espaço de trabalho do Fabric.
- Verifique a conectividade de rede e as configurações do proxy.
Erros de autenticação
Problema: A autenticação do CLI do Azure falha.
Soluções:
- Corra
az loginpara atualizar suas credenciais. - Defina a assinatura 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 sua conta tenha as permissões necessárias para o espaço de trabalho do Fabric.
Erros de biblioteca compartilhada
Problema: O motorista relata 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. - Verifique se existe
/usr/lib/libmicrosoftfabricodbc.so. - Execute
sudo ldconfigpara atualizar o cache da biblioteca compartilhada.
Tempos limite de consulta
Problema: Consultas acabam em tabelas grandes.
Soluções:
- Adicione
LargeTableSupport=trueà cadeia de conexão. - Ajuste
PageSizeBytespelo tamanho do resultado. - Adicione
EnableAsyncPrefetch=1à cadeia de conexão. - Use uma
LIMITcláusula para restringir o tamanho do resultado.
Habilitar registro de log
Ative o registro detalhado em uma DSN:
[FabricDSN]
LogLevel = DEBUG
LogFile = /tmp/fabric_odbc_debug.log
Alternativamente, adicione parâmetros de registro à cadeia de conexão:
LogLevel=DEBUG;LogFile=/tmp/fabric_odbc_debug.log;
O driver suporta os seguintes níveis logarítmicos:
-
TRACE: Inclui todas as chamadas de API. -
DEBUG: Inclui informações detalhadas de depuração. -
INFO: Inclui informações gerais e é o padrão. -
WARN: Inclui apenas avisos. -
ERROR: Inclui apenas erros.
Ativar o rastreamento 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
Desative o rastreamento quando terminar de solucionar o problema para evitar sobrecarga desnecessária de desempenho.