Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
ODBC (Open Database Connectivity) is een veelgebruikte standaard waarmee clienttoepassingen verbinding kunnen maken met en kunnen werken met gegevens uit databases en big data-platforms.
De Microsoft ODBC Driver for Fabric Data Engineering stelt je in staat om Spark-workloads in Fabric te verbinden, te bevragen en te beheren met de betrouwbaarheid en eenvoud van de ODBC-standaard. Gebouwd op de Livy-API's van Fabric, biedt de driver veilige en flexibele Spark SQL-connectiviteit naar je C/C++, .NET, Python en andere ODBC-compatibele applicaties op Linux.
Belangrijkste kenmerken
- ODBC 3.x-conform: Volledige implementatie van de ODBC 3.x-specificatie.
- Microsoft Entra ID-authenticatie: Meerdere authenticatieflows, waaronder Azure CLI, clientgegevens, certificaatgebaseerde en toegangstokenauthenticatie.
- Spark SQL-queryondersteuning: Directe uitvoering van Spark SQL-instructies.
-
Uitgebreide ondersteuning voor datatypes: Ondersteuning voor alle Spark SQL-datatypes, inclusief complexe types (
ARRAY,MAP, enSTRUCT). - Hergebruik van sessies: Ingebouwd sessiebeheer voor betere prestaties.
- High-concurrency-modus: Meld je aan voor gedeelde, warme server-side Livy-sessies om de opstartlatentie van de verbinding en de Spark-cluster sprawl te verminderen.
- Ondersteuning voor grote tabellen: Geoptimaliseerde behandeling voor grote resultatensets met configureerbare paginagroottes.
- Asynchroon vooraf laden: Gegevens op de achtergrond laden voor betere prestaties.
- Proxy-ondersteuning: HTTP-proxyconfiguratie voor enterprise-omgevingen.
- Ondersteuning voor multi-schema-lakehouses: Maak verbinding met een specifiek schema binnen een lakehouse.
Opmerking
In opensource Apache Spark worden database en schema synoniem gebruikt. Bijvoorbeeld, het uitvoeren van SHOW SCHEMAS of SHOW DATABASES in een Fabric-notebook levert hetzelfde resultaat op: een lijst van alle schema's in het lakehouse.
Prerequisites
Voordat je de Microsoft ODBC Driver voor Microsoft Fabric Data Engineering op Linux gebruikt, zorg ervoor dat je aan de volgende vereisten voldoet:
- Besturingssysteem: Ubuntu 22.04 of nieuwer, Debian 11 of nieuwer, of Red Hat Enterprise Linux (RHEL) 8 of nieuwer op x86-64.
-
unixODBC: De ODBC-drivermanager voor Linux. Installeer de pakketten
unixodbcenunixodbc-dev. -
libcurl: De HTTP-runtime-afhankelijkheid, zoals
libcurl4of het equivalente pakket voor je distributie. -
OpenSSL: De TLS- en cryptografie-runtime-afhankelijkheid, zoals
opensslenlibssl3of equivalente pakketten. - Fabric access: Toegang tot een Fabric werkruimte.
- Microsoft Entra ID-inloggegevens: Geschikte inloggegevens voor authenticatie.
- Werkruimte- en meerhuis-ID's: De GUID-identificaties voor je Fabric-werkruimte en meerhuis.
- Azure CLI (optioneel): Vereist wanneer je Azure CLI-authenticatie gebruikt.
Download en installeer op Linux
Het stuurprogramma installeren:
Pak
ms-sparksql-odbc-linux-2.0.0.taruit.Open een terminal in de uitgepakte map.
Installeer het Debian-pakket:
sudo dpkg -i microsoft-fabric-odbc-driver-2.0.0-Linux.deb
Het pakket installeert de volgende bestanden:
| Bestand | Geïnstalleerde locatie |
|---|---|
| Driverbibliotheek | /usr/lib/libmicrosoftfabricodbc.so |
| Sjabloon voor rijbewijsregistratie | /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template |
| DSN-configuratiesjabloon | /usr/share/microsoft-fabric-odbc-driver/odbc.ini.template |
| License | /usr/share/doc/microsoft-fabric-odbc-driver/LICENSE |
| Gebruiksgids | /usr/share/doc/microsoft-fabric-odbc-driver/USAGE_Linux.md |
Installeer een RPM-pakket
Op RHEL, Fedora of CentOS installeer je het RPM-pakket uit het uitgepakte driverarchief:
sudo dnf install ./microsoft-fabric-odbc-driver-*.x86_64.rpm
Alternatief kunt u gebruikmaken rpm:
sudo rpm -i microsoft-fabric-odbc-driver-*.x86_64.rpm
Controleer of de RPM de driver heeft geregistreerd:
odbcinst -q -d | grep "Microsoft"
Om het RPM-pakket te verwijderen, voer je uit:
sudo dnf remove microsoft-fabric-odbc-driver
Installeer een tarball
Voor distributies zonder Debian- of RPM-pakketondersteuning, of voor een aangepaste installatielocatie, haal het .tar.gz pakket uit en voer het installatiescript uit:
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
Het installatiescript ondersteunt deze opties:
| Option | Description |
|---|---|
--prefix=<path> |
Installeer in een aangepaste map. De standaardwaarde is /opt/microsoft/fabricodbc. |
--no-register |
Sla de unixODBC-rijderregistratie over. |
--dry-run |
Laat de geplande wijzigingen zien zonder bestanden te installeren. |
--uninstall |
Verwijder de geïnstalleerde bestanden en verwijder de registratie van de driver. |
--help |
Toon commando-hulp. |
Om de standaard tarball-installatie te verifiëren, voer je uit:
odbcinst -q -d
ls -la /opt/microsoft/fabricodbc/lib/libmicrosoftfabricodbc.so
Om dit te verwijderen, voert u sudo ./install.sh --uninstall uit vanuit de map van het uitgepakte pakket.
Stuur de chauffeur handmatig in
Het pakket registreert de driver automatisch bij unixODBC. Om de driver handmatig te registreren, voer je uit:
sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template
De installatie controleren
Controleer of de driver geregistreerd is en dat de bibliotheek is geïnstalleerd:
odbcinst -q -d
ls -la /usr/lib/libmicrosoftfabricodbc.so
Het odbcinst commando zou moeten vermelden [Microsoft ODBC Driver for Microsoft Fabric Data Engineering].
Verwijder de driver
Om de driver te verwijderen, voer je het volgende commando uit:
sudo dpkg -r microsoft-fabric-odbc-driver
Dit commando verwijdert de driverbestanden en verwijdert het register van de driver uit unixODBC.
Snelstartvoorbeeld
De volgende voorbeelden verbinden met Fabric en voeren een Spark SQL-query uit. Voltooi de vereisten en installeer de driver voordat je een voorbeeld uitvoert.
Python-voorbeeld
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++ voorbeeld
#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;
}
Bouw en draai het voorbeeld:
g++ -o fabric_test fabric_test.cpp -lodbc -std=c++17
./fabric_test
.NET-voorbeeld
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));
}
Indeling van verbindingstekenreeks
Basisverbindingsreeks
Gebruik het volgende verbindingsreeks-formaat:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};<parameter1>=<value1>;<parameter2>=<value2>;...
Onderdelen van verbindingsreeks
| Onderdeel | Description | Voorbeeld |
|---|---|---|
DRIVER |
ODBC-stuurprogramma-id | {Microsoft ODBC Driver for Microsoft Fabric Data Engineering} |
WorkspaceId |
Fabric-werkruimte-id (GUID) | 4bbf89a8-66bb-443f-91af-df31e6a7560b |
LakehouseId |
Fabric lakehouse-id (GUID) | d8faa650-1343-496b-b9cc-d4168a676f90 |
AuthFlow |
Verificatiemethode |
AZURE_CLI, CLIENT_CREDENTIAL, CLIENT_CERTIFICATE, of ACCESS_TOKEN |
Voorbeeld van verbindingsreeksen
Basisverbinding
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI
Verbinding met prestatie-opties
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;ReuseSession=true;LargeTableSupport=true;PageSizeBytes=18874368
Verbinding met logging
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
Verbinding met modus voor hoge gelijktijdigheid
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard
Voor volledige configuratierichtlijnen, zie High-concurrency (HC) mode).
Verificatie
De Microsoft ODBC Driver for Microsoft Fabric Data Engineering ondersteunt meerdere authenticatiemethoden via Microsoft Entra ID. Configureer authenticatie door de AuthFlow parameter in de verbindingsreeks of DSN te gebruiken.
Verificatiemethoden
AuthFlow Waarde |
Description |
|---|---|
AZURE_CLI |
Ontwikkeling met behulp van Azure CLI-referenties |
CLIENT_CREDENTIAL |
Service principal met een cliëntgeheim |
CLIENT_CERTIFICATE |
Dienstleider met een certificaat |
ACCESS_TOKEN |
Vooraf verkregen bearer-toegangstoken |
FILE_TOKEN |
Leet een authenticatietoken uit een bestand |
Opmerking
Interactieve browserauthenticatie is niet beschikbaar op headless Linux-servers. Gebruik in plaats daarvan Azure CLI, client credentials, certificaatgebaseerde of access token-authenticatie.
Azure CLI-verificatie
Gebruik Azure CLI-authenticatie voor ontwikkel- en interactieve applicaties.
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)
Controleer voordat je verbinding maakt of de Azure CLI is geïnstalleerd en log in:
az --version
az login
Om Azure CLI op Debian of Ubuntu te installeren, gebruik je de pakketbeheerder:
sudo apt-get update
sudo apt-get install -y azure-cli
Authenticatie van clientgegevens
Gebruik client-credential-authenticatie voor geautomatiseerde diensten en achtergrondopdrachten.
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};"
)
Geef de volgende parameters op:
-
TenantId: De Microsoft Entra tenant-ID. -
ClientId: de toepassings-id (client). -
ClientSecret: Het cliëntgeheim.
Bewaar geheimen in een beveiligde geheime opslag of omgevingsvariabelen. Sla geen geheimen op in platte tekst verbindingsstrings of INI-bestanden.
Verificatie op basis van certificaat
Gebruik certificaatgebaseerde authenticatie voor bedrijfsapplicaties die certificaatgegevens vereisen.
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>;"
)
Geef de volgende parameters op:
-
TenantId: De Microsoft Entra tenant-ID. -
ClientId: de toepassings-id (client). -
CertificatePath: Het pad naar het PFX- of PKCS12-certificaatbestand. -
CertificatePassword: Het certificaatwachtwoord.
Verificatie van toegangstokens
Gebruik toegangstokenauthenticatie wanneer je applicatie via een ander mechanisme een token verkrijgt.
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};"
)
Authenticatie met bestandstoken
Gebruik bestandstokenauthenticatie in containeriseerde omgevingen en geautomatiseerde pijplijnen waarbij een ander proces een bearertoken schrijft naar het bekende tokenbestand van de driver:
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=FILE_TOKEN;"
)
Voor ondersteunde cross-driver property aliases, zie Cross-driver property aliases.
Configuratieparameters
Benodigde parameters
Neem deze parameters op in elke verbindingsreeks:
| Parameter | Type | Description | Voorbeeld |
|---|---|---|---|
WorkspaceId |
UUID (universeel unieke identificator) | Fabric-werkruimte-id | 4bbf89a8-... |
LakehouseId |
UUID (universeel unieke identificator) | Fabric lakehouse-id | d8faa650-... |
AuthFlow |
String | Type verificatiestroom | AZURE_CLI |
Optionele parameters
Verbindingsinstellingen
| Parameter | Type | Default | Description |
|---|---|---|---|
Database |
String | Geen | Eerste database voor klassieke modus. HC-modus past dit niet automatisch toe; voer USE <database> uit na het maken van verbinding of gebruik volledig gekwalificeerde tabelnamen. |
Scope |
String | https://api.fabric.microsoft.com/.default |
OAuth-bereik |
Prestatie-instellingen
| Parameter | Type | Default | Description |
|---|---|---|---|
ReuseSession |
Boolean | true |
Hergebruik een bestaande Spark-sessie |
LargeTableSupport |
Boolean | false |
Optimalisaties inschakelen voor grote resultatensets |
EnableAsyncPrefetch |
Boolean | false |
Achtergrondgegevens vooraf ophalen |
PageSizeBytes |
Integer |
18874368 (18 MB) |
Paginagrootte voor resultaatpaginering van 1 tot 18 MB |
Instellingen voor logboekregistratie
| Parameter | Type | Default | Description |
|---|---|---|---|
LogLevel |
String | INFO |
Logniveau: DEBUG, WARN, ERROR of INFO. Gebruik DEBUG voor gedetailleerde driverdiagnose. |
LogFile |
String | odbc_driver.log |
Absoluut of relatief pad naar logbestand |
Proxy-instellingen
| Parameter | Type | Default | Description |
|---|---|---|---|
UseProxy |
Boolean | false |
Schakel een proxy in |
ProxyHost |
String | Geen | Proxy-hostnaam |
ProxyPort |
Integer | Geen | Proxypoort |
ProxyUsername |
String | Geen | Gebruikersnaam voor proxyverificatie |
ProxyPassword |
String | Geen | Wachtwoord voor proxyverificatie |
Instellingen voor hoge gelijktijdigheid (HC)
Gebruik deze parameters om high-concurrency (HC) modus in te schakelen en te configureren. HC-modus moet worden ingeschakeld. Als je niet instelt LivyMode of UseHighConcurrency, gebruikt de driver het klassieke pad voor één sessie. Voor richtlijnen en voorbeelden raadpleegt u High-concurrency (HC) mode.
| Parameter | Type | Default | Description |
|---|---|---|---|
LivyMode |
String | Niet ingesteld | Regelt het verkrijgen van sessies. Ondersteunde waarden zijn Classic, HighConcurrencyen Auto.
Auto Gebruikt momenteel het klassieke pad. |
UseHighConcurrency |
Boolean | false |
Schakelt HC-modus in als alternatief voor het instellen van LivyMode=HighConcurrency |
SessionTag |
String | Geen | Biedt een serverzijdige verpakkingshint. Verbindingen moeten een bijpassende server-side configuratie gebruiken om een warme Livy-sessie te delen. |
IdempotencyKey |
String | Geen | Biedt een door de client gegenereerde sleutel voor veilige nieuwe pogingen om HC te verkrijgen. De driver valideert de tekenset en registreert nooit de waarde. |
EnvironmentId |
String | Geen | Specificeert de Fabric-omgevingsidentificatie die wordt verzonden als spark.fabric.environmentDetails in de HC-acquisitieconfiguratie. |
HeartbeatTimeoutInSecond |
Integer | Standaardserver | Stelt de inactiviteitstime-out van de HC-sessie aan de serverzijde in, in seconden. De waarde moet een positief geheel getal zijn. |
AcquireTimeoutSeconds |
Integer | 300 |
Bepaalt hoe lang de bestuurder wacht tot een HC-sessie de Idle staat bereikt, in seconden. De waarde moet een positief geheel getal zijn. |
conf.<key> |
String | Geen | Specificeert een Spark-configuratie-override die wordt verzonden in het HC-acquisitieverzoek. Bijvoorbeeld: conf.spark.sql.shuffle.partitions=200. |
Modusprioriteit en validatie
-
LivyModeHeeft voorrang bovenUseHighConcurrencywanneer je beide parameters instelt. - Parameterwaarden zijn niet hoofdlettergevoelig.
-
UseHighConcurrencyaccepteerttrue,1, ,yesofonom HC-modus in te schakelen. Het accepteertfalse,0, ,no, ofoffom HC-modus uit te schakelen. - Voor andere niet-lege waarden geeft een
SQLDriverConnectfoutmelding terug. DSN-onlySQLConnectregistreert de validatiefout en gebruikt het klassieke pad.
Compatibiliteitsinstellingen
De driver accepteert TenantPrincipal en PoolMax, inclusief hun omgevingsvariabele fallbacks, voor compatibiliteit met eerdere HC-configuraties. De driver parseert en valideert deze waarden, maar ze hebben geen invloed op het matchen van HC-sessies of de capaciteit van de runtimepool. Vertrouw er niet op voor huurdersisolatie of verbindingsbeperkingen.
Terugvalopties voor omgevingsvariabelen
De driver gebruikt de volgende omgevingsvariabelen alleen wanneer de bijbehorende DSN- of verbindingsstringparameter niet is ingesteld:
| Omgevingsvariabele | Verwijst naar |
|---|---|
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 (alleen compatibiliteit) |
FABRIC_ODBC_HC_HEARTBEAT_SECONDS |
HeartbeatTimeoutInSecond |
FABRIC_ODBC_HC_ACQUIRE_TIMEOUT |
AcquireTimeoutSeconds |
FABRIC_ODBC_HC_POOL_MAX |
PoolMax (alleen compatibiliteit) |
Voor FABRIC_ODBC_USE_HC herkent inschakeling alleen voor omgevingen true, 1 of yes (ongeacht hoofdletters en kleine letters). Andere waarden zorgen ervoor dat de HC-modus uitgeschakeld blijft. De on en off aliasen gelden alleen voor DSN- en verbindingsstringwaarden.
Modus voor hoge gelijktijdigheid (HC)
Met de modus voor hoge gelijktijdigheid (HC) kunnen ODBC-verbindingen naar dezelfde werkruimte en hetzelfde lakehouse verbinding maken met gedeelde, actieve Livy Spark-sessies aan de serverzijde, in plaats van voor elke verbinding een afzonderlijk cluster in te richten. Gebruik het voor workloads zoals BI-dashboards, notebook-kernels en ETL-fan-out die veel kortstondige verbindingen openen en serverbeheerde Spark-capaciteit kunnen delen.
HC-modus moet worden ingeschakeld. Als je geen HC-instelling instelt, gebruikt de driver het klassieke pad voor één sessie.
Een verbindingsmodus kiezen
Gebruik HC-modus wanneer:
- Je werklast opent veel kortstondige ODBC-verbindingen, bijvoorbeeld BI-dashboards, kernels van notebooks of ETL-fan-out.
- Verbindingen richten zich op dezelfde werkruimte en lakehouse en kunnen een serverbeheerde Spark-sessie delen.
- Het verminderen van de koude startlatentie per verbinding is belangrijk.
Gebruik de klassieke modus wanneer:
- Elke verbinding vereist een geïsoleerde Spark-sessie vanwege verschillende Spark-configuraties of strikte resource-isolatie.
- Het Fabric Livy-eindpunt voor de doelwerkruimte en het lakehouse biedt geen ondersteuning voor HC-modus.
Schakel de modus voor hoge gelijktijdigheid in
Voeg een parameter voor de modus voor hoge gelijktijdigheid toe aan de DSN of verbindingsreeks.
Aanbevolen: Set LivyMode
Gebruik LivyMode dit om expliciet de sessie-acquisitiemodus te selecteren:
LivyMode=HighConcurrency
Ondersteunde waarden zijn Classic, HighConcurrencyen Auto. Waarden zijn niet hoofdlettergevoelig.
Auto Selecteert momenteel de klassieke modus.
Alternatief: Set UseHighConcurrency
Gebruik de Booleaanse instelling voor compatibiliteit met bestaande configuraties:
UseHighConcurrency=true
Om de modus voor hoge gelijktijdigheid in te schakelen, gebruikt u true, 1, yes of on. Om het uit te schakelen, gebruik false, 0, no, of off. Waarden zijn niet hoofdlettergevoelig.
SQLDriverConnect verwerpt andere niet-lege waarden met SQLSTATE HY024. DSN-only SQLConnect registreert de validatiefout en gebruikt de klassieke modus.
Opmerking
Als je beide parameters instelt, LivyMode krijgt voorrang boven UseHighConcurrency.
Je kunt ook high-concurrency-modus inschakelen voor de huidige shell door gebruik te maken van omgevingsvariabelen:
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
Vereiste parameters in HC-modus
HC-activatie vereist de volgende geldige identificaties:
| Parameter | Aantekeningen |
|---|---|
WorkspaceId |
Moet een geldige Fabric workspace GUID zijn. |
LakehouseId |
Moet een geldige Fabric lakehouse GUID zijn. |
Neem het op SessionTag omdat het server-side matching voor warme sessies beïnvloedt.
Sessiekoppeling
HC-modus garandeert niet dat elke verbinding een bestaande sessie hergebruikt. Voor elk sessie-acquisitieverzoek stuurt de driver het volgende:
- De
SessionTag-waarde. - De effectieve Spark-configuratie, inclusief
conf.*instellingen enEnvironmentId.
De Fabric Livy-dienst beoordeelt deze waarden en beslist of de verbinding aan een warme sessie wordt gekoppeld of een nieuwe sessie wordt aangemaakt. Om het hergebruik van sessies te verbeteren, gebruik consistente waarden over verbindingen die bedoeld zijn om serverbeheerde Spark-capaciteit te delen.
Voorbeeld van verbindingsreeksen
Minimale HC-verbinding met Azure CLI-authenticatie:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard
HC-verbinding met afgestemde time-outs:
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-verbinding met een omgeving en Spark-configuratie-overrides:
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 met 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"
)
Configureer HC-modus in een Linux DSN
In plaats van HC-instellingen in elke verbindingsreeks te herhalen, sla ze op ~/.odbc.ini voor een gebruikersspecifieke DSN of /etc/odbc.ini voor een systeembreed 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
Nadat je het DSN hebt opgeslagen, verifieer het en test je de verbinding.
odbcinst -q -s
isql -k -v "DSN=FabricHCDSN;"
Wanneer een verbindingsreeks geen waarde specificeert, leest de driver deze instellingen uit het DSN:
LivyModeUseHighConcurrencyEnvironmentIdSessionTagIdempotencyKeyHeartbeatTimeoutInSecondAcquireTimeoutSeconds
Het stuurprogramma leest ook de instellingen TenantPrincipal en PoolMax die alleen voor compatibiliteit bedoeld zijn. Gebruik de parameternamen in de HC-instellingentabel.
Important
Het stuurprogramma leest conf.* Spark-configuratieoverschrijvingen niet vanuit de DSN. Voeg ze toe aan de verbindingsreeks tijdens runtime of injecteer ze voordat je aanroeptSQLDriverConnect.
Schakel HC-modus uit
Je kunt nieuwe HC-sessies aankopen uitschakelen zonder de driver opnieuw te deployen. Gebruik de methode die overeenkomt met hoe je HC-modus hebt ingeschakeld:
| bron van de HC-configuratie | Hoe HC-modus uit te schakelen |
|---|---|
| Alleen omgevingsvariabele | Stel FABRIC_ODBC_USE_HC=false, of verwijder de variabele. |
| DSN | Stel LivyMode=Classicin. Alternatief verwijder LivyMode en zet UseHighConcurrency=false. |
| Verbindingsstring | Stel LivyMode=Classic, of verwijder de HC-parameters. |
Connection-string en DSN-instellingen krijgen voorrang boven de omgevingsvariabele fallback. Deze veranderingen hebben alleen invloed op nieuwe verbindingen. Bestaande HC-sessies gaan door tot ze worden uitgebracht.
Begrijp het uitvoerende gedrag van HC
-
Validatie:
SQLDriverConnectverwerpt ongeldige HC Booleaanse en positieve-gehele getallen met SQLSTATEHY024. Het verwerpt een ongeldig(e)LivyModeen ongeldige of te grote waarden voorWorkspaceId,LakehouseIdenIdempotencyKeymet SQLSTATEHY000. Een te grote compatibiliteitswaardeTenantPrincipalresulteert ook inHY000. Voor DSN-onlySQLConnect, registreert de driver gewone HC-validatiefouten en gebruikt de klassieke modus. Te grote beveiligingskritieke waarden zorgen er nog steeds voor dat de verbinding mislukt. -
Gevoelige gegevens: De driver sluit andere gevoelige velden uit of verwijdert
IdempotencyKeydeze uit HC-logs en diagnostische output. - Annuleren: Het annuleren van een statement gebeurt coöperatief. Het serverwerk dat al in uitvoering is, wordt schoon afgerond in plaats van direct te worden beëindigd.
- Stroomonderbraken: HC- en klassieke modi gebruiken aparte stroomonderbrekers. Het uitputten van de ene modus beïnvloedt de andere niet.
-
Initiële database: HC-verbindingen voeren de initiële
USEinstructie voor deDatabaseparameter niet uit. VoerUSE <database>uit nadat u verbinding hebt gemaakt of gebruik volledig gekwalificeerde tabelnamen. -
Diagnostiek: Stel
LogLevel=DEBUGin om het verkrijgen van HC, polling, vrijgave en beslissingen over fouttoewijzing te loggen. Voor gerichte probleemoplossing kun jeLIVY_HC_VERBOSE=1instellen op het opnemen van extra opgeschoonde HC HTTP-diagnostiek.
DSN-configuratie
Op Linux configureer je databronnamen (DSN's) in INI-bestanden in plaats van in het Windows-register.
| Bestand | Scope | Access |
|---|---|---|
/etc/odbc.ini |
Systeembrede DSN's | Vereist sudo |
~/.odbc.ini |
Gebruikersspecifieke DSN's | Alleen huidige gebruiker |
Een DSN maken
Als ~/.odbc.ini dat bestaat, voeg dan de nieuwe DSN-sectie toe zonder het bestaande bestand te vervangen. Kopieer de geïnstalleerde template alleen wanneer je het bestand aanmaakt:
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
Bewerk ~/.odbc.ini met de details van je Fabric-werkruimte:
[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
Controleer het DSN
Geef een lijst van de geconfigureerde DSN's en test vervolgens de verbinding:
odbcinst -q -s
isql -k -v "DSN=FabricDSN;"
Voor het isql commando zijn de unixODBC-opdrachtregelprogramma's vereist. De -k optie gebruikt SQLDriverConnect, waarmee de driver DSN-verbindingsattributen verwerkt.
Gebruik een DSN in applicaties
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);
Voorbeelden van gebruik
Test een verbinding met isql
Start een interactieve SQL-sessie:
isql -k -v "DSN=FabricDSN;"
Voer één enkele query uit:
echo "SELECT 1 AS test" | isql -k -v "DSN=FabricDSN;" -b
Gebruik -k voor Fabric DSN’s zodat isql verbinding maakt via SQLDriverConnect in plaats van via SQLConnect.
Werk met grote resultatensets
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()
Ontdek schema’s en tabellen
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()
Koppeling van gegevenstypen
Het stuurprogramma wijst Spark SQL-gegevenstypen toe aan ODBC SQL-typen:
| Spark SQL-type | ODBC SQL-type | C/C++ type | type van Python | .NET-type |
|---|---|---|---|---|
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-tekenreeks | string |
MAP |
SQL_VARCHAR |
SQLCHAR* |
JSON-tekenreeks | string |
STRUCT |
SQL_VARCHAR |
SQLCHAR* |
JSON-tekenreeks | string |
Platformverschillen
| Feature | Windows | Linux |
|---|---|---|
| Bestuurdersmanager | Microsoft ODBC Driver Manager | unixODBC |
| Driver-binair bestand | microsoftfabricodbc.dll |
libmicrosoftfabricodbc.so |
| DSN-configuratie | Windows-register en GUI |
/etc/odbc.ini en ~/.odbc.ini |
| Rijdersregistratie | Register en odbcad32.exe |
odbcinst -i -d -f |
| HTTP-client | WinHTTP | libcurl |
| TLS | Windows ingebouwde ondersteuning | Openssl |
| Verificatie via certificaat | Windows CryptoAPI | OpenSSL met RS256- en PEM- of PFX-bestanden |
| Interactieve verificatie | Browservenster | Niet beschikbaar op headless-servers |
| Verpakking | MSI-installer |
.deb, .rpm, of .tar.gz pakket |
Probleemoplossingsproces
Bestuurder niet gevonden
Probleem: De verbinding faalt met [IM002] Data source name not found and no default driver specified.
Oplossingen:
- Controleer de chauffeursregistratie door te draaien
odbcinst -q -d. - Controleer of dat bestaat
/usr/lib/libmicrosoftfabricodbc.so. - Registreer het stuurprogramma door
sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.templateuit te voeren. - Installeer het pakket opnieuw door . uit te voeren
sudo dpkg -i microsoft-fabric-odbc-driver-2.0.0-Linux.deb.
Driver niet gevonden na een tarball-installatie
Probleem: De driver is geregistreerd, maar de gedeelde bibliotheek is niet aanwezig op het geregistreerde pad.
Oplossingen:
- Controleer of dat bestaat
/opt/microsoft/fabricodbc/lib/libmicrosoftfabricodbc.so. - Opnieuw uitvoeren
sudo ./install.sh --prefix=/opt/microsoft/fabricodbc. - Als je een aangepaste prefix hebt gebruikt, controleer dan of het pad van de geregistreerde driver hetzelfde prefix gebruikt.
DSN is niet gevonden
Probleem: De verbinding faalt met [IM002] Data source name not found.
Oplossingen:
- Controleer de DSN-configuratie door te draaien
odbcinst -q -s. - Controleer dat of
/etc/odbc.inihet~/.odbc.iniDSN-gedeelte bevat. - Zorg ervoor dat de
Driverwaarde precies overeenkomt met de naam van de geregistreerde bestuurder.
Verbindingsfouten
Probleem: De driver kan geen verbinding maken met Fabric.
Oplossingen:
- Controleer of de workspace ID en lakehouse ID geldige GUIDs zijn.
- Controleer de Azure CLI-authenticatie door
az account showuit te voeren. - Zorg dat je de vereiste Fabric-werkruimterechten hebt.
- Controleer de netwerkconnectiviteit en proxy-instellingen.
Authenticatiefouten
Probleem: Azure CLI-authenticatie faalt.
Oplossingen:
- Ren
az loginom je gegevens te verversen. - Stel het juiste abonnement in door
az account set --subscription <subscription-id>uit te voeren. - Controleer het token door
az account get-access-token --resource https://api.fabric.microsoft.comuit te voeren. - Zorg ervoor dat je account de vereiste Fabric-werkruimterechten heeft.
Fouten in gedeelde bibliotheken
Probleem: De bestuurder meldt error while loading shared libraries: libmicrosoftfabricodbc.so.
Oplossingen:
- Installeer het pakket opnieuw door . uit te voeren
sudo dpkg -i microsoft-fabric-odbc-driver-2.0.0-Linux.deb. - Controleer of dat bestaat
/usr/lib/libmicrosoftfabricodbc.so. - Voer
sudo ldconfiguit om de gedeelde bibliotheekcache te vernieuwen.
Time-outs voor zoekopdrachten
Probleem: Er treedt een time-out op bij query's op grote tabellen.
Oplossingen:
- Voeg
LargeTableSupport=truetoe aan de verbindingsreeks. - Pas
PageSizeBytesaan op de grootte van het resultaat. - Voeg
EnableAsyncPrefetch=1toe aan de verbindingsreeks. - Gebruik een
LIMITclausule om de grootte van het resultaat te beperken.
Logboekregistratie inschakelen
Schakel gedetailleerde logging in een DSN in:
[FabricDSN]
LogLevel = DEBUG
LogFile = /tmp/fabric_odbc_debug.log
Alternatief kun je loggparameters toevoegen aan de verbindingsreeks:
LogLevel=DEBUG;LogFile=/tmp/fabric_odbc_debug.log;
De driver ondersteunt de volgende logboekniveaus:
-
DEBUG: Bevat gedetailleerde foutopsporingsinformatie en is het meest uitgebreide logniveau voor stuurprogramma's. -
INFO: Bevat algemene informatie en is de standaard. -
WARN: Bevat alleen waarschuwingen. -
ERROR: Bevat alleen fouten.
Schakel unixODBC-tracering in
Voor laag-niveau ODBC-aanroepdiagnostiek voegt u de volgende configuratie toe aan /etc/odbcinst.ini:
[ODBC]
Trace = yes
TraceFile = /tmp/odbc_trace.log
Zet het traceren uit zodra je klaar bent met het oplossen van problemen om onnodige prestatie-overhead te voorkomen.