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.
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.
- Högsamtidighetsläge: Välj in delade, varma server-side Livy-sessioner för att minska anslutningsstartslatens och Spark-klustrets spridning.
- Stöd för stora tabeller: Optimerad hantering för stora resultatuppsättningar med konfigurerbara sidstorlekar.
- Asynkron förinläsning: Datainläsning i bakgrunden för förbättrad prestanda.
- Proxystöd: HTTP-proxykonfiguration för företagsmiljöer.
- Stöd för flera scheman i lakehouse: Anslut till ett specifikt schema i ett lakehouse.
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. -
libcurl: HTTP-runtime-beroendet, såsom
libcurl4eller motsvarande paket för din distribution. -
OpenSSL: TLS- och kryptografikörningsberoendet, såsom
opensslochlibssl3eller motsvarande paket. - Fabric access: Tillgång till en Fabric-arbetsplats.
- Microsoft Entra ID-uppgifter: Lämpliga inloggningsuppgifter för autentisering.
- Arbetsyte- och lakehouse-ID:n: GUID-identiteterna för din Fabric-arbetsyta och ditt lakehouse.
- Azure CLI (valfritt): Krävs när du använder Azure CLI-autentisering.
Ladda ner och installera på Linux
Så här installerar du drivrutinen:
Extrahera
ms-sparksql-odbc-linux-2.0.0.tar.Öppna en terminal i den extraherade katalogen.
Installera Debian-paketet:
sudo dpkg -i microsoft-fabric-odbc-driver-2.0.0-Linux.deb
Paketet installerar följande filer:
| File | Installationsplats |
|---|---|
| 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 |
Installera ett RPM-paket
På RHEL, Fedora eller CentOS, installera RPM-paketet från det extraherade drivrutinsarkivet:
sudo dnf install ./microsoft-fabric-odbc-driver-*.x86_64.rpm
Alternativt, använd rpm:
sudo rpm -i microsoft-fabric-odbc-driver-*.x86_64.rpm
Kontrollera att RPM har registrerat drivrutinen:
odbcinst -q -d | grep "Microsoft"
För att avinstallera RPM-paketet, kör:
sudo dnf remove microsoft-fabric-odbc-driver
Installera ett tar-arkiv
För distributioner utan Debian- eller RPM-paketstöd, eller för en anpassad installationsplats, extrahera paketet .tar.gz och kör dess installationsskript:
tar -xzf microsoft-fabric-odbc-driver-2.0.0-linux-x86_64.tar.gz
cd microsoft-fabric-odbc-driver-2.0.0
# Install to /opt/microsoft/fabricodbc.
sudo ./install.sh
# Or install to a custom writable location.
./install.sh --prefix=$HOME/fabricodbc
Installationsskriptet stöder dessa alternativ:
| Option | Description |
|---|---|
--prefix=<path> |
Installera i en egen katalog. Standardvärdet är /opt/microsoft/fabricodbc. |
--no-register |
Hoppa över unixODBC-förarregistreringen. |
--dry-run |
Visa de planerade ändringarna utan att installera filer. |
--uninstall |
Ta bort de installerade filerna och avregistrera drivrutinen. |
--help |
Visa kommandohjälp. |
För att verifiera standardinstallationen av tarball, kör:
odbcinst -q -d
ls -la /opt/microsoft/fabricodbc/lib/libmicrosoftfabricodbc.so
För att avinstallera den, kör sudo ./install.sh --uninstall från den extraherade paketkatalogen.
Installera drivrutin 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-arbetsytans identifierare (GUID) | 4bbf89a8-66bb-443f-91af-df31e6a7560b |
LakehouseId |
Fabric lakehouse-identifier (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
Anslutning med läget för hög samtidighet
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard
För fullständig vägledning om konfiguration, se läge för hög samtidighet (HC).
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 |
FILE_TOKEN |
Läser en autentiseringstoken från en fil |
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-klientorganisations-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-klientorganisations-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};"
)
Autentisering med filtoken
Använd filtokenautentisering i containeriserade miljöer och automatiserade pipelines där en annan process skriver en bärartoken till drivrutinens välkända tokenfil:
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=FILE_TOKEN;"
)
Information om egenskapsalias mellan drivrutiner som stöds finns i Egenskapsalias mellan drivrutiner.
Konfigurationsparametrar
Obligatoriska parametrar
Inkludera dessa parametrar i varje reťazec pripojenia:
| Parameter | Type | Description | Exempel |
|---|---|---|---|
WorkspaceId |
universellt unik identifierare (UUID) | Fabric-arbetsyteidentifierare | 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 | Inledande databas för klassiskt läge. HC-läget tillämpar det inte automatiskt; kör USE <database> efter anslutning eller använd fullt kvalificerade tabellnamn. |
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å: DEBUG, INFO, WARN, eller ERROR. Använd DEBUG för detaljerad drivrutinsdiagnostik. |
LogFile |
String | odbc_driver.log |
Absolut eller relativ loggfilsökväg |
Proxyinställningar
| Parameter | Type | Default | Description |
|---|---|---|---|
UseProxy |
Boolean | false |
Aktivera proxy |
ProxyHost |
String | None | Proxyvärdnamn |
ProxyPort |
Integer | None | Proxyport |
ProxyUsername |
String | None | Proxyautentiseringsanvändarnamn |
ProxyPassword |
String | None | Proxyautentiseringslösenord |
Inställningar för hög samtidighet (HC)
Använd dessa parametrar för att aktivera och konfigurera högkonkurrensläge (HC). HC-läget är frivilligt. Om du inte ställer LivyMode in eller UseHighConcurrency, använder drivrutinen den klassiska enkelsessionsvägen. Vägledning och exempel finns i läge för hög samtidighet (HC).
| Parameter | Type | Default | Description |
|---|---|---|---|
LivyMode |
String | Inte inställt | Styr insamling av sessioner. Värden som stöds är Classic, HighConcurrencyoch Auto.
Auto Använder för närvarande den klassiska vägen. |
UseHighConcurrency |
Boolean | false |
Aktiverar HC-läge som ett alternativ till att sätta LivyMode=HighConcurrency. |
SessionTag |
String | None | Ger ett tips om paketering på serversidan. Anslutningar måste använda matchande serverkonfiguration för att dela en varm Livy-session. |
IdempotencyKey |
String | None | Tillhandahåller en klientgenererad nyckel för säkra HC-förvärvsförsök. Drivrutinen validerar teckenuppsättningen och loggar aldrig värdet. |
EnvironmentId |
String | None | Specificerar Fabric-miljöidentifieraren som skickas som spark.fabric.environmentDetails i HC-anskaffningskonfigurationen. |
HeartbeatTimeoutInSecond |
Integer | Serverns standardinställning | Anger tidsgränsen för inaktivitet för den serversidiga HC-sessionen, i sekunder. Värdet måste vara ett positivt heltal. |
AcquireTimeoutSeconds |
Integer | 300 |
Anger hur länge drivrutinen väntar på att en HC-session ska nå tillståndet Idle, i sekunder. Värdet måste vara ett positivt heltal. |
conf.<key> |
String | None | Specificerar en Spark-konfigurationsöverskrivning som skickas i HC-anskaffningsbegäran. Till exempel conf.spark.sql.shuffle.partitions=200. |
Lägesprioritering och validering
-
LivyModeHar företräde framförUseHighConcurrencynär du sätter båda parametrarna. - Parametervärden är inte kasuskänsliga.
-
UseHighConcurrencyaccepterartrue,1, ,yes, elleronaktiverar HC-läge. Den accepterarfalse,0,noelleroffför att inaktivera HC-läget. - För andra icke-tomma värden returnerar
SQLDriverConnectett fel. DSN-endastSQLConnectloggar valideringsfelet och använder den klassiska vägen.
Kompatibilitetsinställningar
Drivrutinen accepterar TenantPrincipal och PoolMax, inklusive deras miljövariabler för att säkerställa kompatibilitet med tidigare HC-konfigurationer. Drivrutinen tolkar och validerar dessa värden, men de påverkar inte HC-sessionsmatchning eller körtidspoolens kapacitet. Lita inte på dem för isolering av hyresgäster eller anslutningsbegränsningar.
Reservvärden för miljövariabler
Drivrutinen använder följande miljövariabler endast när motsvarande DSN- eller anslutningssträngsparameter inte är satt:
| Miljövariabel | Mappar till |
|---|---|
FABRIC_ODBC_USE_HC |
UseHighConcurrency |
FABRIC_ODBC_WORKSPACE_ID |
WorkspaceId |
FABRIC_ODBC_LAKEHOUSE_ID |
LakehouseId |
FABRIC_ODBC_ENVIRONMENT_ID |
EnvironmentId |
FABRIC_ODBC_SESSION_TAG |
SessionTag |
FABRIC_ODBC_TENANT_PRINCIPAL |
TenantPrincipal (endast kompatibilitet) |
FABRIC_ODBC_HC_HEARTBEAT_SECONDS |
HeartbeatTimeoutInSecond |
FABRIC_ODBC_HC_ACQUIRE_TIMEOUT |
AcquireTimeoutSeconds |
FABRIC_ODBC_HC_POOL_MAX |
PoolMax (endast kompatibilitet) |
För FABRIC_ODBC_USE_HC känner aktivering endast för miljö igen true, 1 eller yes (skiftlägesokänsligt). Andra värden lämnar HC-läget inaktiverat. Och onoff aliasen gäller endast för DSN- och anslutningssträngsvärden.
Läge för hög samtidighet (HC)
High-concurrency (HC)-läge låter ODBC-anslutningar till samma arbetsyta och lakehouse ansluta till delade, varma server-sida Livy Spark-sessioner istället för att provisionera ett separat kluster för varje anslutning. Använd det för arbetsbelastningar som BI-dashboards, notebook-kärnor och ETL-fan-out som öppnar många kortvariga anslutningar och kan dela serverhanterad Spark-kapacitet.
HC-läget är frivilligt. Om du inte konfigurerar en HC-inställning använder drivrutinen den klassiska enkelsessionsvägen.
Välj ett anslutningsläge
Använd HC-läge när:
- Din arbetsbelastning öppnar många kortvariga ODBC-anslutningar, till exempel BI-paneler, notebook-kärnor eller ETL-förgreningar.
- Anslutningar riktar sig mot samma arbetsyta och lakehouse och kan dela en serverhanterad Spark-session.
- Att minska kallstartslatens per anslutning är viktigt.
Använd klassiskt läge när:
- Varje anslutning kräver en isolerad Spark-session på grund av olika Spark-konfigurationer eller strikt resursisolering.
- Fabric Livy-endpointen för målarbetsytan och lakehouse stöder inte HC-läge.
Aktivera läge för hög samtidighet
Lägg till en parameter för hög samtidighet i DSN:en eller anslutningssträngen.
Rekommenderat: Set LivyMode
Använd LivyMode för att explicit välja sessionsinhämtningsläget:
LivyMode=HighConcurrency
Värden som stöds är Classic, HighConcurrencyoch Auto. Värden är inte skiftlägeskänsliga.
Auto Väljer för närvarande klassiskt läge.
Alternativ: Ange UseHighConcurrency
Använd den booleska inställningen för kompatibilitet med befintliga konfigurationer:
UseHighConcurrency=true
För att aktivera läge för hög samtidighet använder du true, 1, yes eller on. För att inaktivera den, använd false, 0, , noeller off. Värden är inte skiftlägeskänsliga.
SQLDriverConnect förkastar andra icke-tomma värden med SQLSTATE HY024. DSN-endast SQLConnect loggar valideringsfelet och använder klassiskt läge.
Note
Om du sätter båda parametrarna, LivyMode får företräde över UseHighConcurrency.
Du kan också aktivera läget för hög samtidighet för det nuvarande skalet genom att använda miljövariabler:
export FABRIC_ODBC_USE_HC=true
export FABRIC_ODBC_WORKSPACE_ID=<workspace-id>
export FABRIC_ODBC_LAKEHOUSE_ID=<lakehouse-id>
export FABRIC_ODBC_SESSION_TAG=bi-dashboard
Nödvändiga parametrar i HC-läge
HC-aktivering kräver följande giltiga identifierare:
| Parameter | Notes |
|---|---|
WorkspaceId |
Måste vara en giltig Fabric workspace GUID. |
LakehouseId |
Det måste vara ett giltigt Fabric lakehouse-GUID. |
Inkludera SessionTag eftersom det påverkar matchningen på serversidan för uppvärmda sessioner.
Matchning av sessioner
HC-läget garanterar inte att varje anslutning återanvänder en befintlig session. För varje sessionsinhämtningsbegäran skickar drivrutinen:
- Värdet
SessionTag. - Den effektiva Spark-konfigurationen, inklusive
conf.*inställningar ochEnvironmentId.
Fabric Livy-tjänsten utvärderar dessa värden och beslutar om kopplingen ska kopplas till en varm session eller skapas en ny. För att förbättra återanvändning av sessioner, använd konsekventa värden över anslutningar som är avsedda att dela serverhanterad Spark-kapacitet.
Exempel på anslutningssträngar
Minimal HC-anslutning med Azure CLI-autentisering:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard
HC-anslutning med justerade tidsgränser:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=etl-prod;AcquireTimeoutSeconds=180;HeartbeatTimeoutInSecond=600
HC-anslutning med en miljö och konfigurationsåsidosättningar för Spark:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;EnvironmentId=<environment-id>;SessionTag=ml-team;conf.spark.sql.shuffle.partitions=200;conf.spark.executor.memory=8g
Python med pyodbc:
import pyodbc
conn = pyodbc.connect(
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;"
"LivyMode=HighConcurrency;"
"SessionTag=notebook-kernel"
)
Konfigurera HC-läge i en Linux DSN
Istället för att upprepa HC-inställningar i varje anslutningssträng, lagra dem i ~/.odbc.ini för ett användarspecifikt DSN eller i /etc/odbc.ini för ett systemomfattande DSN.
[FabricHCDSN]
Description = Microsoft Fabric Data Engineering with HC mode
Driver = Microsoft ODBC Driver for Microsoft Fabric Data Engineering
WorkspaceId = <workspace-id>
LakehouseId = <lakehouse-id>
AuthFlow = AZURE_CLI
LivyMode = HighConcurrency
SessionTag = bi-dashboard
AcquireTimeoutSeconds = 300
HeartbeatTimeoutInSecond = 600
Efter att du sparat DSN:et, verifiera det och testa anslutningen.
odbcinst -q -s
isql -k -v "DSN=FabricHCDSN;"
När en reťazec pripojenia inte specificerar något värde, läser drivrutinen dessa inställningar från DSN:n:
LivyModeUseHighConcurrencyEnvironmentIdSessionTagIdempotencyKeyHeartbeatTimeoutInSecondAcquireTimeoutSeconds
Drivrutinen läser också inställningarna TenantPrincipal och PoolMax, som endast är avsedda för kompatibilitet. Använd parameternamnen i HC-inställningstabellen.
Important
Drivrutinen läser conf.* inte Spark-konfigurationsöverskrivningar från DSN. Lägg till dem i anslutningssträngen under körning eller injicera dem innan du anropar SQLDriverConnect.
Inaktivera HC-läget
Du kan inaktivera att nya HC-sessioner hämtas utan att driftsätta om drivrutinen. Använd metoden som motsvarar hur du aktiverade HC-läget:
| HC-konfigurationskälla | Hur man inaktiverar HC-läget |
|---|---|
| Endast miljövariabel | Sätt FABRIC_ODBC_USE_HC=false, eller ta bort variabeln. |
| DSN | Ange LivyMode=Classic. Alternativt, ta bort LivyMode och sätt UseHighConcurrency=false. |
| Anslutningssträng | Sätt LivyMode=Classic, eller ta bort HC-parametrarna. |
Anslutningssträngs- och DSN-inställningar har företräde framför miljövariabelns fallback. Dessa förändringar påverkar endast nya anslutningar. Befintliga HC-sessioner fortsätter tills de släpps.
Förstå HC:s körtidsbeteende
-
Validering:
SQLDriverConnectavvisar ogiltiga HC Booleska och positiva heltalsvärden med SQLSTATEHY024. Den avvisar en ogiltigLivyModesamt ogiltiga eller för storaWorkspaceId-,LakehouseId- ochIdempotencyKey-värden med SQLSTATE-kodenHY000. Ett för stort kompatibilitetsvärde returnerar ocksåHY000. För endastSQLConnectDSN loggar drivrutinen vanliga HC-valideringsfel och använder klassiskt läge. Överdimensionerade säkerhetskänsliga värden misslyckas fortfarande med anslutningen. -
Känslig data: Drivrutinen utesluter eller raderar
IdempotencyKeyandra känsliga fält från HC-loggar och diagnostiska utdata. - Avbrytning: Avbrytning av satsen sker kooperativt. Pågående serverprocesser fasas ut på ett kontrollerat sätt i stället för att avbrytas omedelbart.
- Automatsäkringar: HC-läge och klassiskt läge använder separata automatsäkringar. Att tömma ett läge påverkar inte det andra.
-
Initialdatabas: HC-anslutningar exekverar inte den initiala
USEsatsen för parameternDatabase. KörUSE <database>efter anslutning eller använd fullt kvalificerade tabellnamn. -
Diagnostik: Ställ
LogLevel=DEBUGin för att logga beslut om HC-förvärv, polling, release och felkartläggning. För riktad felsökning anger duLIVY_HC_VERBOSE=1så att ytterligare sanerad HC HTTP-diagnostik inkluderas.
DSN-konfiguration
På Linux, konfigurera datakällnamn (DSN) i INI-filer istället för i Windows-registret.
| File | Scope | Åtkomst |
|---|---|---|
/etc/odbc.ini |
DSN:er för hela systemet | Kräver sudo |
~/.odbc.ini |
Användarspecifika DSN | Endast aktuell användare |
Skapa ett DSN
Om ~/.odbc.ini det finns, lägg till den nya DSN-sektionen utan att ersätta den befintliga filen. Kopiera den installerade mallen endast när du skapar filen:
if [ -e "$HOME/.odbc.ini" ]; then
echo "Preserve ~/.odbc.ini and add the new DSN section manually."
else
cp /usr/share/microsoft-fabric-odbc-driver/odbc.ini.template "$HOME/.odbc.ini"
fi
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 -k -v "DSN=FabricDSN;"
Kommandot isql kräver kommandoradsverktygen unixODBC. Alternativet -k använder SQLDriverConnect, vilket låter drivrutinen bearbeta DSN-anslutningsattribut.
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 -k -v "DSN=FabricDSN;"
Kör en enda fråga:
echo "SELECT 1 AS test" | isql -k -v "DSN=FabricDSN;" -b
Använd -k för Fabric-DSN:er så att isql ansluter via SQLDriverConnect i stället för SQLConnect.
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_VARBINARY |
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 |
| Drivrutinsbinärfil | 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 inbyggt 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 |
.deb, .rpm, eller .tar.gz 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-2.0.0-Linux.deb.
Driver hittades inte efter en tarball-installation
Problem: Drivrutinen är registrerad, men det delade biblioteket finns inte på den registrerade sökvägen.
Lösningar:
- Kontrollera att det
/opt/microsoft/fabricodbc/lib/libmicrosoftfabricodbc.sofinns. -
sudo ./install.sh --prefix=/opt/microsoft/fabricodbcKör om . - Om du använde ett anpassat prefix, kontrollera att den registrerade drivrutinsvägen använder samma prefix.
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. - Kontrollera att
~/.odbc.inieller/etc/odbc.iniinnehåller avsnittet DSN. - Se till att
Drivervärdet exakt matchar den registrerade förarens namn.
Anslutningsfel
Problem: Drivrutinen kan inte ansluta till Fabric.
Lösningar:
- Kontrollera att arbetsyte-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:
- Kör
az loginför att uppdatera dina autentiseringsuppgifter. - 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.
Fel i delade bibliotek
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-2.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 överskrider tidsgränsen mot 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:
-
DEBUG: Innehåller detaljerad felsökningsinformation och är den mest utförliga drivrutinsloggnivån. -
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.