Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Important
Den här funktionen är i förhandsversion.
ODBC (Open Database Connectivity) är en allmänt antagen standard som gör det möjligt för klientprogram att ansluta till och arbeta med data från databaser och stordataplattformar.
Microsoft ODBC Driver för Fabric Data Engineering låter dig koppla in, fråga och hantera Spark-arbetsbelastningar i Fabric med samma tillförlitlighet och enkelhet som ODBC-standarden. Drivrutinen är byggd på Fabric:s Livy-API:er och erbjuder säker och flexibel Spark SQL-anslutning till dina C/C++, .NET, Python och andra ODBC-kompatibla applikationer på Linux.
Viktiga funktioner
- ODBC 3.x-kompatibel: Fullständig implementering av ODBC 3.x-specifikationen.
- Microsoft Entra ID-autentisering: Flera autentiseringsflöden, inklusive Azure CLI, klientuppgifter, certifikatbaserad autentisering och autentisering av åtkomsttoken.
- Stöd för Spark SQL-frågor: Direkt exekvering av Spark SQL-satser.
-
Omfattande stöd för datatyper: Stöd för alla Spark SQL-datatyper, inklusive komplexa typer (
ARRAY,MAP, ochSTRUCT). - Återanvändning av sessioner: Inbyggd sessionshantering för förbättrad prestanda.
- Stöd för stora tabeller: Optimerad hantering för stora resultatuppsättningar med konfigurerbara sidstorlekar.
- Asynkron prefetch: Bakgrundsdata laddas in för förbättrad prestanda.
- Proxystöd: HTTP-proxykonfiguration för företagsmiljöer.
- Multi-schema sjöhusstöd: Anslut till ett specifikt schema inom ett sjöhus.
Note
I Apache Spark med öppen källkod används databas och schema synonymt. Till exempel, att köra SHOW SCHEMAS eller SHOW DATABASES i en Fabric-notebook ger samma resultat: en lista över alla scheman i lakehouse.
Förutsättningar
Innan du använder Microsoft ODBC Driver för Microsoft Fabric Data Engineering på Linux, se till att du uppfyller följande förutsättningar:
- Operativsystem: Ubuntu 22.04 eller senare, Debian 11 eller senare, eller Red Hat Enterprise Linux (RHEL) 8 eller senare på x86-64.
-
unixODBC: ODBC:s drivrutinshanterare för Linux. Installera
unixodbcochunixodbc-devpaketen. - Fabric access: Tillgång till en Fabric-arbetsplats.
- Microsoft Entra ID-uppgifter: Lämpliga inloggningsuppgifter för autentisering.
- Workspace- och lakehouse-ID:n: GUID-identifierarna för din Fabric-arbetsplats och lakehouse.
- Azure CLI (valfritt): Krävs när du använder Azure CLI-autentisering.
Ladda ner och installera på Linux
Microsoft ODBC Driver för Microsoft Fabric Data Engineering version 1.0.0 finns tillgänglig i offentlig förhandsvisning.
Så här installerar du drivrutinen:
Extrahera
ms-sparksql-odbc-linux-1.0.0.zip.Öppna en terminal i den extraherade katalogen.
Installera Debian-paketet:
sudo dpkg -i microsoft-fabric-odbc-driver-1.0.0-Linux.deb
Paketet installerar följande filer:
| File | Installerad plats |
|---|---|
| Drivrutinsbibliotek | /usr/lib/libmicrosoftfabricodbc.so |
| Mall för förarregistrering | /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template |
| DSN-konfigurationsmall | /usr/share/microsoft-fabric-odbc-driver/odbc.ini.template |
| License | /usr/share/doc/microsoft-fabric-odbc-driver/LICENSE |
| Användningsguide | /usr/share/doc/microsoft-fabric-odbc-driver/USAGE_Linux.md |
Registrera drivrutinen manuellt
Paketet registrerar automatiskt drivrutinen hos unixODBC. För att registrera drivrutinen manuellt, kör:
sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template
Kontrollera installationen
Verifiera att drivrutinen är registrerad och att biblioteket är installerat:
odbcinst -q -d
ls -la /usr/lib/libmicrosoftfabricodbc.so
Kommandot odbcinst ska lista [Microsoft ODBC Driver for Microsoft Fabric Data Engineering].
Avinstallera drivrutinen
För att avinstallera drivrutinen, kör följande kommando:
sudo dpkg -r microsoft-fabric-odbc-driver
Detta kommando tar bort drivrutinsfilerna och avregistrerar drivrutinen från unixODBC.
Snabbstartsexempel
Följande exempel ansluter till Fabric och kör en Spark SQL-fråga. Fyll i förkunskaperna och installera drivrutinen innan du kör ett exempel.
Python-exempel
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()
C/C++-exempel
#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;
}
Bygg och kör exemplet:
g++ -o fabric_test fabric_test.cpp -lodbc -std=c++17
./fabric_test
.NET-exempel
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));
}
Format för anslutningssträng
Grundläggande anslutningssträng
Använd följande reťazec pripojenia-format:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};<parameter1>=<value1>;<parameter2>=<value2>;...
Anslutningssträngskomponenter
| Component | Description | Exempel |
|---|---|---|
DRIVER |
ODBC-drivrutinsidentifierare | {Microsoft ODBC Driver for Microsoft Fabric Data Engineering} |
WorkspaceId |
Fabric workspace-identifierare (GUID) | 4bbf89a8-66bb-443f-91af-df31e6a7560b |
LakehouseId |
Fabric lakehouse-identifierare (GUID) | d8faa650-1343-496b-b9cc-d4168a676f90 |
AuthFlow |
Autentiseringsmetod |
AZURE_CLI, CLIENT_CREDENTIAL, CLIENT_CERTIFICATEeller ACCESS_TOKEN |
Exempel på anslutningssträngar
Grundläggande anslutning
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI
Anslutning till prestandaalternativ
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;ReuseSession=true;LargeTableSupport=true;PageSizeBytes=18874368
Koppling till skogsavverkning
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
Autentisering
Microsoft ODBC Driver för Microsoft Fabric Data Engineering stöder flera autentiseringsmetoder via Microsoft Entra ID. Konfigurera autentisering genom att använda parametern AuthFlow i reťazec pripojenia eller DSN.
Autentiseringsmetoder
AuthFlow värde |
Description |
|---|---|
AZURE_CLI |
Utveckling med autentiseringsuppgifter för Azure CLI |
CLIENT_CREDENTIAL |
Tjänstehuvudperson med en klienthemlighet |
CLIENT_CERTIFICATE |
Tjänsteansvarig med certifikat |
ACCESS_TOKEN |
Fördefinierad ägaråtkomsttoken |
Note
Interaktiv webbläsarautentisering finns inte tillgänglig på headless Linux-servrar. Använd istället Azure CLI, klientuppgifter, certifikatbaserad autentisering eller åtkomsttokenautentisering.
Azure CLI-autentisering
Använd Azure CLI-autentisering för utveckling och interaktiva applikationer.
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)
Innan du ansluter, kontrollera att Azure CLI är installerat och logga in:
az --version
az login
För att installera Azure CLI på Debian eller Ubuntu, använd pakethanteraren:
sudo apt-get update
sudo apt-get install -y azure-cli
Autentisering av klientuppgifter
Använd autentisering av klientuppgifter för automatiserade tjänster och bakgrundsjobb.
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};"
)
Ange följande parametrar:
-
TenantId: Microsoft Entra-tenant-ID:t. -
ClientId: Applikations-ID (klient). -
ClientSecret: Klienthemligheten.
Lagra hemligheter i en säker hemlig lagring eller miljövariabler. Spara inte hemligheter i klartextanslutningssträngar eller INI-filer.
Certifikatbaserad autentisering
Använd certifikatbaserad autentisering för företagsapplikationer som kräver certifikatuppgifter.
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>;"
)
Ange följande parametrar:
-
TenantId: Microsoft Entra-tenant-ID:t. -
ClientId: Applikations-ID (klient). -
CertificatePath: Vägen till PFX- eller PKCS12-certifikatfilen. -
CertificatePassword: Certifikatlösenordet.
Åtkomsttokenautentisering
Använd autentisering av accesstoken när din applikation skaffar en token via en annan mekanism.
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};"
)
Konfigurationsparametrar
Obligatoriska parametrar
Inkludera dessa parametrar i varje reťazec pripojenia:
| Parameter | Type | Description | Exempel |
|---|---|---|---|
WorkspaceId |
universellt unik identifierare (UUID) | Infrastrukturarbetsyteidentifierare | 4bbf89a8-... |
LakehouseId |
universellt unik identifierare (UUID) | Fabric lakehouse-identifierare | d8faa650-... |
AuthFlow |
String | Typ av autentiseringsflöde | AZURE_CLI |
Valfria parametrar
Anslutningsinställningar
| Parameter | Type | Default | Description |
|---|---|---|---|
Database |
String | None | Specifik databas att ansluta till |
Scope |
String | https://api.fabric.microsoft.com/.default |
OAuth-omfång |
Prestandainställningar
| Parameter | Type | Default | Description |
|---|---|---|---|
ReuseSession |
Boolean | true |
Återanvänd en befintlig Spark-session |
LargeTableSupport |
Boolean | false |
Aktivera optimeringar för stora resultatuppsättningar |
EnableAsyncPrefetch |
Boolean | false |
Aktivera förinläsning av bakgrundsdata |
PageSizeBytes |
Integer |
18874368 (18 MB) |
Sidstorlek för resultatsidning från 1 till 18 MB |
Loggningsinställningar
| Parameter | Type | Default | Description |
|---|---|---|---|
LogLevel |
String | INFO |
Log-nivå: TRACE, DEBUG, INFO, , WARNeller ERROR |
LogFile |
String | odbc_driver.log |
Absolut eller relativ loggfilsökväg |
Proxyinställningar
| Parameter | Type | Default | Description |
|---|---|---|---|
UseProxy |
Boolean | false |
Aktivera en proxy |
ProxyHost |
String | None | Proxyvärdnamn |
ProxyPort |
Integer | None | Proxyport |
ProxyUsername |
String | None | Proxyautentiseringsanvändarnamn |
ProxyPassword |
String | None | Proxyautentiseringslösenord |
DSN-konfiguration
På Linux, konfigurera datakällnamn (DSN) i INI-filer istället för i Windows-registret.
| File | Scope | Access |
|---|---|---|
/etc/odbc.ini |
Systemomfattande DSN | Kräver sudo |
~/.odbc.ini |
Användarspecifika DSN | Endast aktuell användare |
Skapa ett DSN
Kopiera den installerade mallen:
cp /usr/share/microsoft-fabric-odbc-driver/odbc.ini.template ~/.odbc.ini
Redigera ~/.odbc.ini med dina Fabric-arbetsytsdetaljer:
[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
Verifiera DSN
Lista de konfigurerade DSN:erna och testa sedan anslutningen:
odbcinst -q -s
isql -v FabricDSN
Kommandot isql kräver kommandoradsverktygen unixODBC.
Använd DSN i applikationer
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);
Användningsexempel
Testa en anslutning med isql
Starta en interaktiv SQL-session:
isql -v FabricDSN
Kör en enda fråga:
echo "SELECT 1 AS test" | isql -v FabricDSN -b
Arbete med stora resultatmängder
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()
Upptäck scheman och tabeller
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()
Datatypkartläggning
Drivrutinen mappar Spark SQL-datatyper till ODBC SQL-typer:
| Spark SQL-typ | ODBC SQL-typ | C/C++-typ | Python-typ | .NET-typ |
|---|---|---|---|---|
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* |
JSON-sträng | string |
MAP |
SQL_VARCHAR |
SQLCHAR* |
JSON-sträng | string |
STRUCT |
SQL_VARCHAR |
SQLCHAR* |
JSON-sträng | string |
Plattformsskillnader
| Feature | Windows | Linux |
|---|---|---|
| Förarchef | Microsoft ODBC Driver Manager | unixODBC |
| Driverbinär | microsoftfabricodbc.dll |
libmicrosoftfabricodbc.so |
| DSN-konfiguration | Windows-register och GUI |
/etc/odbc.ini och ~/.odbc.ini |
| Förarregistrering | Register och odbcad32.exe |
odbcinst -i -d -f |
| HTTP-klient | WinHTTP | libcurl |
| TLS | Windows inbjudet stöd | Openssl |
| Certifikatsautentisering | Windows CryptoAPI | OpenSSL med RS256 och PEM- eller PFX-filer |
| Interaktiv autentisering | Webbläsarfönster | Ej tillgänglig på headless-servrar |
| Förpackning | MSI-installationsprogram | Linux-paket |
Felsökning
Föraren ej hittad
Problem: Anslutningen misslyckas med [IM002] Data source name not found and no default driver specified.
Lösningar:
- Verifiera förarregistreringen genom att köra
odbcinst -q -d. - Kontrollera att det
/usr/lib/libmicrosoftfabricodbc.sofinns. - Registrera föraren genom att köra
sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template. - Installera om paketet genom att köra
sudo dpkg -i microsoft-fabric-odbc-driver-1.0.0-Linux.deb.
DSN hittades inte
Problem: Anslutningen misslyckas med [IM002] Data source name not found.
Lösningar:
- Verifiera DSN-konfigurationen genom att köra
odbcinst -q -s. - Verifiera att det
~/.odbc.inieller/etc/odbc.iniinnehåller DSN-sektionen. - Se till att
Drivervärdet exakt matchar den registrerade förarens namn.
Anslutningsfel
Problem: Drivrutinen kan inte ansluta till Fabric.
Lösningar:
- Kontrollera att arbetsmiljö-ID:t och lakehouse-ID:t är giltiga GUID:er.
- Kontrollera Azure CLI-autentisering genom att köra
az account show. - Se till att du har de nödvändiga behörigheterna för Fabric-arbetsutrymmet.
- Kolla nätverksanslutning och proxyinställningar.
Autentiseringsfel
Problem: Azure CLI-autentisering misslyckas.
Lösningar:
- Spring
az loginför att uppdatera dina inloggningsuppgifter. - Sätt rätt prenumeration genom att köra
az account set --subscription <subscription-id>. - Kontrollera token genom att köra
az account get-access-token --resource https://api.fabric.microsoft.com. - Se till att ditt konto har de nödvändiga behörigheterna för Fabric-arbetsytan.
Delade biblioteksfel
Problem: Föraren rapporterar error while loading shared libraries: libmicrosoftfabricodbc.so.
Lösningar:
- Installera om paketet genom att köra
sudo dpkg -i microsoft-fabric-odbc-driver-1.0.0-Linux.deb. - Kontrollera att det
/usr/lib/libmicrosoftfabricodbc.sofinns. - Kör
sudo ldconfigför att uppdatera det delade bibliotekscachen.
Tidsgränser för frågor
Problem: Frågor går ut på stora tabeller.
Lösningar:
- Lägg till
LargeTableSupport=truei anslutningssträngen. - Justera
PageSizeBytesför resultatstorleken. - Lägg till
EnableAsyncPrefetch=1i anslutningssträngen. - Använd en
LIMITklausul för att begränsa resultatstorleken.
Aktivera loggning
Aktivera detaljerad loggning i ett DSN:
[FabricDSN]
LogLevel = DEBUG
LogFile = /tmp/fabric_odbc_debug.log
Alternativt, lägg till loggningsparametrar i reťazec pripojenia:
LogLevel=DEBUG;LogFile=/tmp/fabric_odbc_debug.log;
Drivrutinen stöder följande logaritmnivåer:
-
TRACE: Inkluderar alla API-anrop. -
DEBUG: Innehåller detaljerad felsökningsinformation. -
INFO: Innehåller allmän information och är standard. -
WARN: Innehåller endast varningar. -
ERROR: Innehåller endast fel.
Aktivera unixODBC-spårning
För låg-nivå ODBC-anropsdiagnostik, lägg till följande konfiguration i /etc/odbcinst.ini:
[ODBC]
Trace = yes
TraceFile = /tmp/odbc_trace.log
Stäng av spårning när du är klar med felsökningen för att undvika onödig prestandabelastning.