Πρόγραμμα οδήγησης Microsoft ODBC για Microsoft Fabric Data Engineering σε Linux

Το ODBC (Open Database Connectivity) είναι ένα ευρέως διαδεδομένο πρότυπο που επιτρέπει στις εφαρμογές-πελάτες να συνδέονται και να εργάζονται με δεδομένα από βάσεις δεδομένων και πλατφόρμες μεγάλων δεδομένων.

Το πρόγραμμα οδήγησης Microsoft ODBC για Fabric Data Engineering σάς επιτρέπει να συνδέετε, να υποβάλλετε ερωτήματα και να διαχειρίζεστε φόρτους εργασίας Spark στο Fabric με την αξιοπιστία και την απλότητα του προτύπου ODBC. Χτισμένο στα API Livy του Fabric, το πρόγραμμα οδήγησης παρέχει ασφαλή και ευέλικτη συνδεσιμότητα Spark SQL με τις εφαρμογές C/C++, .NET, Python και άλλες εφαρμογές συμβατές με ODBC στο Linux.

Δυνατότητες κλειδιά

  • Συμβατό με ODBC 3.x: Πλήρης εφαρμογή της προδιαγραφής ODBC 3.x.
  • Έλεγχος ταυτότητας Microsoft Entra ID: Πολλαπλές ροές ελέγχου ταυτότητας, συμπεριλαμβανομένου του Azure CLI, των διαπιστευτηρίων προγράμματος-πελάτη, του ελέγχου ταυτότητας βάσει πιστοποιητικών και του ελέγχου ταυτότητας διακριτικού πρόσβασης.
  • Υποστήριξη ερωτημάτων Spark SQL: Άμεση εκτέλεση δηλώσεων Spark SQL.
  • Ολοκληρωμένη υποστήριξη τύπων δεδομένων: Υποστήριξη για όλους τους τύπους δεδομένων Spark SQL, συμπεριλαμβανομένων των σύνθετων τύπων (ARRAY, MAP, και STRUCT).
  • Επαναχρησιμοποίηση συνεδρίας: Ενσωματωμένη διαχείριση συνεδρίας για βελτιωμένη απόδοση.
  • Λειτουργία υψηλής ταυτόχρονης λειτουργίας: Επιλέξτε κοινόχρηστες, θερμές συνεδρίες Livy από την πλευρά του διακομιστή για να μειώσετε τον λανθάνοντα χρόνο εκκίνησης της σύνδεσης και την εξάπλωση του συμπλέγματος Spark.
  • Υποστήριξη μεγάλου πίνακα: Βελτιστοποιημένος χειρισμός για μεγάλα σύνολα αποτελεσμάτων με διαμορφώσιμα μεγέθη σελίδας.
  • Ασύγχρονη προφόρτωση: Φόρτωση δεδομένων παρασκηνίου για βελτιωμένη απόδοση.
  • Υποστήριξη διακομιστή μεσολάβησης: Διαμόρφωση διακομιστή μεσολάβησης HTTP για εταιρικά περιβάλλοντα.
  • Υποστήριξη lakehouse πολλαπλών σχημάτων: Συνδεθείτε σε ένα συγκεκριμένο σχήμα μέσα σε ένα lakehouse.

Σημείωση

Στο Apache Spark ανοιχτού κώδικα, η βάση δεδομένων και το σχήμα χρησιμοποιούνται συνώνυμα. Για παράδειγμα, η εκτέλεση SHOW SCHEMAS ή SHOW DATABASES σε ένα σημειωματάριο Fabric επιστρέφει το ίδιο αποτέλεσμα: μια λίστα με όλα τα σχήματα στο lakehouse.

Προαπαιτούμενα

Πριν χρησιμοποιήσετε το πρόγραμμα οδήγησης Microsoft ODBC για το Microsoft Fabric Data Engineering σε Linux, βεβαιωθείτε ότι έχετε τις ακόλουθες προϋποθέσεις:

  • Λειτουργικό σύστημα: Ubuntu 22.04 ή νεότερη έκδοση, Debian 11 ή νεότερη έκδοση ή Red Hat Enterprise Linux (RHEL) 8 ή νεότερη έκδοση σε x86-64.
  • unixODBC: Ο διαχειριστής προγραμμάτων οδήγησης ODBC για Linux. Εγκαταστήστε τα unixodbc πακέτα and unixodbc-dev .
  • libcurl: Η εξάρτηση χρόνου εκτέλεσης HTTP, όπως libcurl4 ή το αντίστοιχο πακέτο για τη διανομή σας.
  • OpenSSL: Η εξάρτηση χρόνου εκτέλεσης TLS και κρυπτογραφίας, όπως openssl ή libssl3 ισοδύναμα πακέτα.
  • Fabric access: Πρόσβαση σε χώρο εργασίας Fabric.
  • Διαπιστευτήρια Microsoft Entra ID: Κατάλληλα διαπιστευτήρια για έλεγχο ταυτότητας.
  • Αναγνωριστικά χώρου εργασίας και lakehouse: Τα αναγνωριστικά GUID για τον χώρο εργασίας Fabric και το lakehouse.
  • Azure CLI (προαιρετικό): Απαιτείται όταν χρησιμοποιείτε έλεγχο ταυτότητας Azure CLI.

Λήψη και εγκατάσταση σε Linux

Για να εγκαταστήσετε το πρόγραμμα οδήγησης:

  1. Απόσπασμα ms-sparksql-odbc-linux-2.0.0.tar.

  2. Ανοίξτε ένα τερματικό στον κατάλογο που έχει εξαχθεί.

  3. Εγκαταστήστε το πακέτο Debian:

    sudo dpkg -i microsoft-fabric-odbc-driver-2.0.0-Linux.deb
    

Το πακέτο εγκαθιστά τα ακόλουθα αρχεία:

Αρχείο Εγκατεστημένη τοποθεσία
Βιβλιοθήκη προγραμμάτων οδήγησης /usr/lib/libmicrosoftfabricodbc.so
Πρότυπο εγγραφής οδηγού /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template
Πρότυπο διαμόρφωσης DSN /usr/share/microsoft-fabric-odbc-driver/odbc.ini.template
Άδεια χρήσης /usr/share/doc/microsoft-fabric-odbc-driver/LICENSE
Οδηγός χρήσης /usr/share/doc/microsoft-fabric-odbc-driver/USAGE_Linux.md

Εγκαταστήστε ένα πακέτο RPM

Σε RHEL, Fedora ή CentOS, εγκαταστήστε το πακέτο RPM από το αρχείο προγραμμάτων οδήγησης που έχει εξαχθεί:

sudo dnf install ./microsoft-fabric-odbc-driver-*.x86_64.rpm

Εναλλακτικά, χρησιμοποιήστε rpm:

sudo rpm -i microsoft-fabric-odbc-driver-*.x86_64.rpm

Βεβαιωθείτε ότι το RPM κατέγραψε το πρόγραμμα οδήγησης:

odbcinst -q -d | grep "Microsoft"

Για να απεγκαταστήσετε το πακέτο RPM, εκτελέστε:

sudo dnf remove microsoft-fabric-odbc-driver

Εγκαταστήστε ένα tarball

Για διανομές χωρίς υποστήριξη πακέτων Debian ή RPM, ή για μια προσαρμοσμένη θέση εγκατάστασης, εξαγάγετε το πακέτο και εκτελέστε το .tar.gz σενάριο εγκατάστασής του:

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

Το σενάριο εγκατάστασης υποστηρίζει αυτές τις επιλογές:

Επιλογή Περιγραφή
--prefix=<path> Εγκατάσταση σε προσαρμοσμένο κατάλογο. Η προεπιλογή είναι /opt/microsoft/fabricodbc.
--no-register Παράλειψη εγγραφής προγράμματος οδήγησης unixODBC.
--dry-run Εμφάνιση των προγραμματισμένων αλλαγών χωρίς εγκατάσταση αρχείων.
--uninstall Καταργήστε τα εγκατεστημένα αρχεία και καταργήστε την εγγραφή του προγράμματος οδήγησης.
--help Εμφάνιση βοήθειας εντολών.

Για να επαληθεύσετε την προεπιλεγμένη εγκατάσταση συμπιεσμένου τύπου tarball, εκτελέστε:

odbcinst -q -d
ls -la /opt/microsoft/fabricodbc/lib/libmicrosoftfabricodbc.so

Για να το απεγκαταστήσετε, εκτελέστε sudo ./install.sh --uninstall από τον κατάλογο πακέτων που έχει εξαχθεί.

Μη αυτόματη εγγραφή προγράμματος οδήγησης

Το πακέτο καταχωρεί αυτόματα το πρόγραμμα οδήγησης στο unixODBC. Για να καταχωρήσετε το πρόγραμμα οδήγησης με μη αυτόματο τρόπο, εκτελέστε:

sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template

Επαληθεύστε την εγκατάσταση

Βεβαιωθείτε ότι το πρόγραμμα οδήγησης είναι καταχωρημένο και ότι η βιβλιοθήκη είναι εγκατεστημένη:

odbcinst -q -d
ls -la /usr/lib/libmicrosoftfabricodbc.so

Η odbcinst εντολή θα πρέπει να αναφέρει [Microsoft ODBC Driver for Microsoft Fabric Data Engineering].

Απεγκαταστήστε το πρόγραμμα οδήγησης

Για να καταργήσετε την εγκατάσταση του προγράμματος οδήγησης, εκτελέστε την ακόλουθη εντολή:

sudo dpkg -r microsoft-fabric-odbc-driver

Αυτή η εντολή καταργεί τα αρχεία του προγράμματος οδήγησης και καταργεί την καταχώρηση του προγράμματος οδήγησης από το unixODBC.

Παράδειγμα γρήγορης εκκίνησης

Τα παρακάτω παραδείγματα συνδέονται στο Fabric και εκτελούν ένα ερώτημα Spark SQL. Συμπληρώστε τις προϋποθέσεις και εγκαταστήστε το πρόγραμμα οδήγησης πριν εκτελέσετε ένα παράδειγμα.

Παράδειγμα 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()

Παράδειγμα 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;
}

Δημιουργήστε και εκτελέστε το παράδειγμα:

g++ -o fabric_test fabric_test.cpp -lodbc -std=c++17
./fabric_test

Παράδειγμα .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));
}

Μορφή συμβολοσειράς σύνδεσης

Βασική συμβολοσειρά σύνδεσης

Χρησιμοποιήστε την ακόλουθη μορφή συμβολοσειρά σύνδεσης:

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};<parameter1>=<value1>;<parameter2>=<value2>;...

Στοιχεία συμβολοσειράς σύνδεσης

Συνθετικός Περιγραφή Παράδειγμα
DRIVER Αναγνωριστικό προγράμματος οδήγησης ODBC {Microsoft ODBC Driver for Microsoft Fabric Data Engineering}
WorkspaceId Fabric workspace identifier (GUID) 4bbf89a8-66bb-443f-91af-df31e6a7560b
LakehouseId Fabric lakehouse αναγνωριστικό (GUID) d8faa650-1343-496b-b9cc-d4168a676f90
AuthFlow Μέθοδο ελέγχου ταυτότητας AZURE_CLI, CLIENT_CREDENTIAL, CLIENT_CERTIFICATE, ή ACCESS_TOKEN

Παράδειγμα συμβολοσειρών σύνδεσης

Βασική σύνδεση

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI

Σύνδεση με επιλογές απόδοσης

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;ReuseSession=true;LargeTableSupport=true;PageSizeBytes=18874368

Σύνδεση με την καταγραφή

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

Σύνδεση με λειτουργία υψηλής ταυτόχρονης λειτουργίας

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard

Για πλήρεις οδηγίες ρύθμισης παραμέτρων, ανατρέξτε στην ενότητα Λειτουργία υψηλής ταυτόχρονης εκτέλεσης (HC)).

Authentication

Το πρόγραμμα οδήγησης Microsoft ODBC για Microsoft Fabric Data Engineering υποστηρίζει πολλές μεθόδους ελέγχου ταυτότητας μέσω του Microsoft Entra ID. Ρυθμίστε τις παραμέτρους του ελέγχου ταυτότητας χρησιμοποιώντας την AuthFlow παράμετρο στο συμβολοσειρά σύνδεσης ή στο DSN.

Μέθοδοι ελέγχου ταυτότητας

AuthFlow τιμή Περιγραφή
AZURE_CLI Ανάπτυξη με χρήση διαπιστευτηρίων Azure CLI
CLIENT_CREDENTIAL Κύρια υπηρεσία με μυστικό πελάτη
CLIENT_CERTIFICATE Κύριος υπηρεσίας με πιστοποιητικό
ACCESS_TOKEN Προαποκτηθέν διακριτικό πρόσβασης κομιστή
FILE_TOKEN Διαβάζει ένα διακριτικό ελέγχου ταυτότητας από ένα αρχείο

Σημείωση

Ο αλληλεπιδραστικός έλεγχος ταυτότητας προγράμματος περιήγησης δεν είναι διαθέσιμος σε διακομιστές Linux χωρίς κεφάλι. Χρησιμοποιήστε το Azure CLI, τα διαπιστευτήρια προγράμματος-πελάτη, τον έλεγχο ταυτότητας βάσει πιστοποιητικών ή τον έλεγχο ταυτότητας διακριτικού πρόσβασης.

Έλεγχος ταυτότητας Azure CLI

Χρησιμοποιήστε τον έλεγχο ταυτότητας Azure CLI για ανάπτυξη και αλληλεπιδραστικές εφαρμογές.

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)

Πριν συνδεθείτε, βεβαιωθείτε ότι το Azure CLI είναι εγκατεστημένο και εισέλθετε:

az --version
az login

Για να εγκαταστήσετε το Azure CLI σε Debian ή Ubuntu, χρησιμοποιήστε τη διαχείριση πακέτων:

sudo apt-get update
sudo apt-get install -y azure-cli

Έλεγχος ταυτότητας διαπιστευτηρίων πελάτη

Χρησιμοποιήστε έλεγχο ταυτότητας διαπιστευτηρίων προγράμματος-πελάτη για αυτοματοποιημένες υπηρεσίες και εργασίες παρασκηνίου.

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};"
)

Δώστε τις ακόλουθες παραμέτρους:

  • TenantId: Το αναγνωριστικό μισθωτή Microsoft Entra.
  • ClientId: Το αναγνωριστικό εφαρμογής (προγράμματος-πελάτη).
  • ClientSecret: Ο μυστικός κωδικός προγράμματος-πελάτη.

Αποθηκεύστε μυστικά σε έναν ασφαλή μυστικό χώρο αποθήκευσης ή μεταβλητές περιβάλλοντος. Μην αποθηκεύετε μυστικά σε συμβολοσειρές σύνδεσης απλού κειμένου ή αρχεία INI.

Έλεγχος ταυτότητας βασισμένος σε πιστοποιητικό

Χρησιμοποιήστε έλεγχο ταυτότητας βάσει πιστοποιητικού για εταιρικές εφαρμογές που απαιτούν διαπιστευτήρια πιστοποιητικού.

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>;"
)

Δώστε τις ακόλουθες παραμέτρους:

  • TenantId: Το αναγνωριστικό μισθωτή Microsoft Entra.
  • ClientId: Το αναγνωριστικό εφαρμογής (προγράμματος-πελάτη).
  • CertificatePath: Η διαδρομή προς το αρχείο πιστοποιητικού PFX ή PKCS12.
  • CertificatePassword: Ο κωδικός πρόσβασης του πιστοποιητικού.

Έλεγχος ταυτότητας διακριτικού πρόσβασης

Χρησιμοποιήστε τον έλεγχο ταυτότητας διακριτικού πρόσβασης όταν η εφαρμογή σας αποκτά ένα διακριτικό μέσω άλλου μηχανισμού.

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};"
)

Έλεγχος ταυτότητας διακριτικού αρχείου

Χρησιμοποιήστε τον έλεγχο ταυτότητας διακριτικού αρχείου σε περιβάλλοντα με κοντέινερ και αυτοματοποιημένες διοχετεύσεις όπου μια άλλη διεργασία εγγράφει ένα διακριτικό κομιστή στο γνωστό αρχείο διακριτικού του προγράμματος οδήγησης:

connection_string = (
    "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
    "WorkspaceId=<workspace-id>;"
    "LakehouseId=<lakehouse-id>;"
    "AuthFlow=FILE_TOKEN;"
)

Για υποστηριζόμενα ψευδώνυμα ιδιοτήτων μεταξύ οδηγών, ανατρέξτε στην ενότητα Ψευδώνυμα ιδιοτήτων μεταξύ οδηγών.

Παράμετροι διαμόρφωσης

Απαιτούμενες παράμετροι

Συμπεριλάβετε αυτές τις παραμέτρους σε κάθε συμβολοσειρά σύνδεσης:

Παράμετρος Type Περιγραφή Παράδειγμα
WorkspaceId UUID Αναγνωριστικό χώρου εργασίας Fabric 4bbf89a8-...
LakehouseId UUID Αναγνωριστικό Fabric lakehouse d8faa650-...
AuthFlow Συμβλοσειρά Τύπος ροής ελέγχου ταυτότητας AZURE_CLI

Προαιρετικές παράμετροι

Ρυθμίσεις σύνδεσης

Παράμετρος Type Προεπιλεγμένος Περιγραφή
Database Συμβλοσειρά Χωρίς Αρχική βάση δεδομένων για κλασική λειτουργία. Η λειτουργία HC δεν την εφαρμόζει αυτόματα. εκτελείται USE <database> μετά τη σύνδεση ή χρησιμοποιήστε πλήρως προσδιορισμένα ονόματα πινάκων.
Scope Συμβλοσειρά https://api.fabric.microsoft.com/.default Πεδίο εφαρμογής OAuth

Ρυθμίσεις απόδοσης

Παράμετρος Type Προεπιλεγμένος Περιγραφή
ReuseSession δυαδική τιμή true Επαναχρησιμοποίηση υπάρχουσας περιόδου λειτουργίας Spark
LargeTableSupport δυαδική τιμή false Ενεργοποίηση βελτιστοποιήσεων για μεγάλα σύνολα αποτελεσμάτων
EnableAsyncPrefetch δυαδική τιμή false Ενεργοποίηση προφόρτωσης δεδομένων παρασκηνίου
PageSizeBytes Integer 18874368 (18 MB) Μέγεθος σελίδας για σελιδοποίηση αποτελεσμάτων από 1 έως 18 MB

Ρυθμίσεις καταγραφής

Παράμετρος Type Προεπιλεγμένος Περιγραφή
LogLevel Συμβλοσειρά INFO Επίπεδο καταγραφής: DEBUG, INFO, WARN, ή ERROR. Χρησιμοποιήστε το DEBUG για λεπτομερή διαγνωστικό έλεγχο του προγράμματος οδήγησης.
LogFile Συμβλοσειρά odbc_driver.log Απόλυτη ή σχετική διαδρομή αρχείου καταγραφής

Ρυθμίσεις διακομιστή μεσολάβησης

Παράμετρος Type Προεπιλεγμένος Περιγραφή
UseProxy δυαδική τιμή false Ενεργοποίηση διακομιστή μεσολάβησης
ProxyHost Συμβλοσειρά Χωρίς Όνομα κεντρικού υπολογιστή διακομιστή μεσολάβησης
ProxyPort Integer Χωρίς Θύρα διακομιστή μεσολάβησης
ProxyUsername Συμβλοσειρά Χωρίς Όνομα χρήστη ελέγχου ταυτότητας διακομιστή μεσολάβησης
ProxyPassword Συμβλοσειρά Χωρίς Κωδικός πρόσβασης ελέγχου ταυτότητας διακομιστή μεσολάβησης

Ρυθμίσεις υψηλής ταυτοχρονισμού (HC)

Χρησιμοποιήστε αυτές τις παραμέτρους για να ενεργοποιήσετε και να διαμορφώσετε τη λειτουργία υψηλής ταυτόχρονης εκτέλεσης (HC). Η λειτουργία HC είναι προαιρετική. Εάν δεν ορίσετε LivyMode ή UseHighConcurrency, το πρόγραμμα οδήγησης χρησιμοποιεί την κλασική διαδρομή μίας περιόδου λειτουργίας. Για οδηγίες και παραδείγματα, ανατρέξτε στο θέμα Λειτουργία υψηλής ταυτόχρονης εκτέλεσης (HC).

Παράμετρος Type Προεπιλεγμένος Περιγραφή
LivyMode Συμβλοσειρά Δεν έχει οριστεί Ελέγχει την απόκτηση συνεδρίας. Οι υποστηριζόμενες τιμές είναι Classic, HighConcurrencyκαι Auto. Auto Προς το παρόν χρησιμοποιεί την κλασική διαδρομή.
UseHighConcurrency δυαδική τιμή false Ενεργοποιεί τη λειτουργία HC ως εναλλακτική λύση στη ρύθμιση LivyMode=HighConcurrency.
SessionTag Συμβλοσειρά Χωρίς Παρέχει μια υπόδειξη συσκευασίας από την πλευρά του διακομιστή. Οι συνδέσεις πρέπει να χρησιμοποιούν αντίστοιχες ρυθμίσεις από την πλευρά του διακομιστή για να μοιράζονται μια ζεστή συνεδρία Livy.
IdempotencyKey Συμβλοσειρά Χωρίς Παρέχει ένα κλειδί που δημιουργείται από τον πελάτη για ασφαλείς επαναλήψεις απόκτησης HC. Το πρόγραμμα οδήγησης επικυρώνει το σύνολο χαρακτήρων και δεν καταγράφει ποτέ την τιμή.
EnvironmentId Συμβλοσειρά Χωρίς Καθορίζει το αναγνωριστικό περιβάλλοντος Fabric που αποστέλλεται όπως spark.fabric.environmentDetails στη ρύθμιση παραμέτρων απόκτησης HC.
HeartbeatTimeoutInSecond Integer Προεπιλογή διακομιστή Ορίζει το χρονικό όριο αδράνειας της περιόδου λειτουργίας HC από την πλευρά του διακομιστή, σε δευτερόλεπτα. Η τιμή πρέπει να είναι θετικός ακέραιος.
AcquireTimeoutSeconds Integer 300 Ορίζει το χρονικό διάστημα αναμονής του προγράμματος οδήγησης για να φτάσει μια περίοδος λειτουργίας HC στην Idle κατάσταση, σε δευτερόλεπτα. Η τιμή πρέπει να είναι θετικός ακέραιος.
conf.<key> Συμβλοσειρά Χωρίς Καθορίζει μια παράκαμψη ρύθμισης παραμέτρων Spark που αποστέλλεται στην αίτηση απόκτησης HC. Για παράδειγμα, conf.spark.sql.shuffle.partitions=200.

Προτεραιότητα και επικύρωση τρόπου λειτουργίας

  • LivyMode έχει προτεραιότητα UseHighConcurrency όταν ορίζετε και τις δύο παραμέτρους.
  • Στις τιμές των παραμέτρων δεν γίνεται διάκριση πεζών-κεφαλαίων.
  • UseHighConcurrency δέχεται true, 1, , yesή on για να ενεργοποιήσετε τη λειτουργία HC. Δέχεται false, 0, , noή off για να απενεργοποιήσει τη λειτουργία HC.
  • Για άλλες μη κενές τιμές, SQLDriverConnect το επιστρέφει σφάλμα. Μόνο DSN SQLConnect καταγράφει την αποτυχία επικύρωσης και χρησιμοποιεί την κλασική διαδρομή.

Ρυθμίσεις συμβατότητας

Το πρόγραμμα οδήγησης δέχεται TenantPrincipal και PoolMax, συμπεριλαμβανομένων των εναλλακτικών μεταβλητών περιβάλλοντος, για συμβατότητα με προηγούμενες διαμορφώσεις HC. Το πρόγραμμα οδήγησης αναλύει και επικυρώνει αυτές τις τιμές, αλλά δεν επηρεάζουν την αντιστοίχιση περιόδων λειτουργίας HC ή τη χωρητικότητα του χώρου συγκέντρωσης χρόνου εκτέλεσης. Μην βασίζεστε σε αυτά για την απομόνωση ενοικιαστών ή τα όρια σύνδεσης.

Εναλλακτικές μεταβλητές περιβάλλοντος

Το πρόγραμμα οδήγησης χρησιμοποιεί τις ακόλουθες μεταβλητές περιβάλλοντος μόνο όταν δεν έχει οριστεί η αντίστοιχη παράμετρος DSN ή συμβολοσειράς σύνδεσης:

Μεταβλητή περιβάλλοντος Χάρτες προς
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 (μόνο συμβατότητα)
FABRIC_ODBC_HC_HEARTBEAT_SECONDS HeartbeatTimeoutInSecond
FABRIC_ODBC_HC_ACQUIRE_TIMEOUT AcquireTimeoutSeconds
FABRIC_ODBC_HC_POOL_MAX PoolMax (μόνο συμβατότητα)

Για FABRIC_ODBC_USE_HCτο , η ενεργοποίηση μόνο για trueπεριβάλλον αναγνωρίζει , 1ή yes (χωρίς διάκριση πεζών-κεφαλαίων). Άλλες τιμές αφήνουν τη λειτουργία HC απενεργοποιημένη. Τα on ψευδώνυμα και off ισχύουν μόνο για τιμές DSN και συμβολοσειράς σύνδεσης.

Λειτουργία υψηλής ταυτοχρονισμού (HC).

Η λειτουργία υψηλής ταυτόχρονης εκτέλεσης (HC) επιτρέπει στις συνδέσεις ODBC στον ίδιο χώρο εργασίας και lakehouse να συνδέονται σε κοινόχρηστες, θερμές περιόδους λειτουργίας Livy Spark από την πλευρά του διακομιστή αντί να παρέχουν ξεχωριστό σύμπλεγμα για κάθε σύνδεση. Χρησιμοποιήστε το για φόρτους εργασίας, όπως πίνακες εργαλείων BI, πυρήνες σημειωματαρίων και ανεμιστήρα ETL που ανοίγουν πολλές συνδέσεις μικρής διάρκειας και μπορούν να κάνουν κοινή χρήση χωρητικότητας Spark διαχειριζόμενη από διακομιστή.

Η λειτουργία HC είναι προαιρετική. Εάν δεν ρυθμίσετε τις παραμέτρους μιας ρύθμισης HC, το πρόγραμμα οδήγησης χρησιμοποιεί την κλασική διαδρομή μίας περιόδου λειτουργίας.

Επιλογή λειτουργίας σύνδεσης

Χρησιμοποιήστε τη λειτουργία HC όταν:

  • Ο φόρτος εργασίας σας ανοίγει πολλές βραχύβιες συνδέσεις ODBC, όπως πίνακες εργαλείων BI, πυρήνες σημειωματαρίων ή ανεμιστήρα ETL.
  • Οι συνδέσεις στοχεύουν τον ίδιο χώρο εργασίας και lakehouse και μπορούν να κάνουν κοινή χρήση μιας περιόδου λειτουργίας Spark που διαχειρίζεται ο διακομιστής.
  • Η μείωση της καθυστέρησης ψυχρής εκκίνησης ανά σύνδεση είναι σημαντική.

Χρησιμοποιήστε την κλασική λειτουργία όταν:

  • Κάθε σύνδεση απαιτεί μια απομονωμένη περίοδο λειτουργίας Spark λόγω διαφορετικών ρυθμίσεων παραμέτρων Spark ή αυστηρής απομόνωσης πόρων.
  • Το τελικό σημείο Fabric Livy για τον χώρο εργασίας προορισμού και το lakehouse δεν υποστηρίζει τη λειτουργία HC.

Ενεργοποίηση λειτουργίας υψηλής ταυτόχρονης λειτουργίας

Προσθέστε μια παράμετρο λειτουργίας υψηλής ταυτόχρονης εκτέλεσης στο DSN ή στο συμβολοσειρά σύνδεσης.

Συνιστάται: Σετ LivyMode

Χρησιμοποιήστε το LivyMode για να επιλέξετε ρητά τον τρόπο απόκτησης συνεδρίας:

LivyMode=HighConcurrency

Οι υποστηριζόμενες τιμές είναι Classic, HighConcurrencyκαι Auto. Οι τιμές δεν κάνουν διάκριση πεζών-κεφαλαίων. Auto Αυτήν τη στιγμή επιλέγει την κλασική λειτουργία.

Εναλλακτική: Σετ UseHighConcurrency

Χρησιμοποιήστε τη δυαδική ρύθμιση για συμβατότητα με υπάρχουσες διαμορφώσεις:

UseHighConcurrency=true

Για να ενεργοποιήσετε τη λειτουργία υψηλής ταυτόχρονης εκτέλεσης, χρησιμοποιήστε true, 1, yesή on. Για να το απενεργοποιήσετε, χρησιμοποιήστε falseτα , 0, no, ή off. Οι τιμές δεν κάνουν διάκριση πεζών-κεφαλαίων. SQLDriverConnect απορρίπτει άλλες μη κενές τιμές με το SQLSTATE HY024. Μόνο SQLConnect DSN καταγράφει την αποτυχία επικύρωσης και χρησιμοποιεί την κλασική λειτουργία.

Σημείωση

Εάν ορίσετε και τις δύο παραμέτρους, το έχει LivyMode προτεραιότητα έναντι του UseHighConcurrency.

Μπορείτε επίσης να ενεργοποιήσετε τη λειτουργία υψηλής ταυτόχρονης εκτέλεσης για το τρέχον κέλυφος, χρησιμοποιώντας μεταβλητές περιβάλλοντος:

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

Απαιτούμενες παράμετροι σε λειτουργία HC

Η ενεργοποίηση HC απαιτεί τα ακόλουθα έγκυρα αναγνωριστικά:

Παράμετρος Σημειώσεις
WorkspaceId Πρέπει να είναι έγκυρο GUID χώρου εργασίας Fabric.
LakehouseId Πρέπει να είναι έγκυρο GUID Fabric lakehouse.

Συμπεριλάβετε SessionTag επειδή επηρεάζει την αντιστοίχιση από την πλευρά του διακομιστή για θερμές συνεδρίες.

Αντιστοίχιση συνεδρίας

Η λειτουργία HC δεν εγγυάται ότι κάθε σύνδεση επαναχρησιμοποιεί μια υπάρχουσα περίοδο λειτουργίας. Για κάθε αίτημα απόκτησης συνεδρίας, ο οδηγός αποστέλλει:

  • Η SessionTag αξία.
  • Η αποτελεσματική διαμόρφωση του Spark, συμπεριλαμβανομένων των conf.* ρυθμίσεων και EnvironmentIdτων αρχείων .

Η υπηρεσία Fabric Livy αξιολογεί αυτές τις τιμές και αποφασίζει εάν θα συνδέσει τη σύνδεση σε μια θερμή συνεδρία ή θα δημιουργήσει μια νέα συνεδρία. Για να βελτιώσετε την επαναχρησιμοποίηση περιόδων λειτουργίας, χρησιμοποιήστε συνεπείς τιμές σε όλες τις συνδέσεις που προορίζονται για κοινή χρήση χωρητικότητας Spark διαχειριζόμενη από διακομιστή.

Παράδειγμα συμβολοσειρών σύνδεσης

Ελάχιστη σύνδεση HC με έλεγχο ταυτότητας Azure CLI:

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard

Σύνδεση HC με συντονισμένα τάιμ άουτ:

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 με ένα περιβάλλον και η ρύθμιση παραμέτρων 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 με 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"
)

Διαμορφώστε τη λειτουργία HC σε ένα Linux DSN

Αντί να επαναλαμβάνετε τις ρυθμίσεις HC σε κάθε συμβολοσειρά σύνδεσης, αποθηκεύστε τις ~/.odbc.ini για ένα DSN συγκεκριμένου χρήστη ή /etc/odbc.ini για ένα 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

Αφού αποθηκεύσετε το DSN, επαληθεύστε το και δοκιμάστε τη σύνδεση.

odbcinst -q -s
isql -k -v "DSN=FabricHCDSN;"

Όταν μια συμβολοσειρά σύνδεσης δεν καθορίζει μια τιμή, το πρόγραμμα οδήγησης διαβάζει αυτές τις ρυθμίσεις από το DSN:

  • LivyMode
  • UseHighConcurrency
  • EnvironmentId
  • SessionTag
  • IdempotencyKey
  • HeartbeatTimeoutInSecond
  • AcquireTimeoutSeconds

Το πρόγραμμα οδήγησης διαβάζει επίσης τη συμβατότητα μόνο TenantPrincipal και PoolMax τις ρυθμίσεις. Χρησιμοποιήστε τα ονόματα παραμέτρων στον πίνακα ρυθμίσεων HC.

Σημαντικό

Το πρόγραμμα οδήγησης δεν διαβάζει conf.* τις παρακάμψεις ρύθμισης παραμέτρων Spark από το DSN. Προσθέστε τα στο συμβολοσειρά σύνδεσης κατά το χρόνο εκτέλεσης ή εισάγετε τα πριν καλέσετε SQLDriverConnect.

Απενεργοποιήστε τη λειτουργία HC

Μπορείτε να απενεργοποιήσετε τη λήψη νέων περιόδων λειτουργίας HC χωρίς να αναπτύξετε ξανά το πρόγραμμα οδήγησης. Χρησιμοποιήστε τη μέθοδο που αντιστοιχεί στον τρόπο με τον οποίο ενεργοποιήσατε τη λειτουργία HC:

Πηγή διαμόρφωσης HC Πώς να απενεργοποιήσετε τη λειτουργία HC
Μόνο μεταβλητή περιβάλλοντος Ορίστε FABRIC_ODBC_USE_HC=falseή καταργήστε τη μεταβλητή.
ΔΣΝ Σετ LivyMode=Classic. Εναλλακτικά, αφαιρέστε LivyMode και ρυθμίστε το UseHighConcurrency=false.
Συμβολοσειρά σύνδεσης Ορίστε LivyMode=Classicή καταργήστε τις παραμέτρους HC.

Οι ρυθμίσεις συμβολοσειράς σύνδεσης και DSN έχουν προτεραιότητα έναντι της εναλλακτικής μεταβλητής περιβάλλοντος. Αυτές οι αλλαγές επηρεάζουν μόνο τις νέες συνδέσεις. Οι υπάρχουσες συνεδρίες HC συνεχίζονται μέχρι να κυκλοφορήσουν.

Κατανόηση της συμπεριφοράς χρόνου εκτέλεσης HC

  • Επικύρωση:SQLDriverConnect απορρίπτει μη έγκυρες τιμές HC Boolean και θετικούς-ακέραιους αριθμούς με SQLSTATE HY024. Απορρίπτει ένα μη έγκυρο LivyMode και μη έγκυρο ή υπερμεγέθη WorkspaceId, LakehouseIdκαι IdempotencyKey τιμές με SQLSTATE HY000. Μια υπερμεγέθης τιμή συμβατότητας TenantPrincipal επιστρέφει HY000επίσης . Για μόνο SQLConnectDSN , το πρόγραμμα οδήγησης καταγράφει τις συνήθεις αποτυχίες επικύρωσης HC και χρησιμοποιεί την κλασική λειτουργία. Οι υπερμεγέθεις τιμές που είναι ευαίσθητες στην ασφάλεια εξακολουθούν να αποτυγχάνουν στη σύνδεση.
  • Ευαίσθητα δεδομένα: Το πρόγραμμα οδήγησης εξαιρεί ή καθαρίζει IdempotencyKey και άλλα ευαίσθητα πεδία από τα αρχεία καταγραφής HC και την έξοδο διαγνωστικών ελέγχων.
  • Ακύρωση: Η ακύρωση της δήλωσης είναι συνεργατική. Οι εργασίες διακομιστή που βρίσκονται ήδη σε εξέλιξη ολοκληρώνονται καθαρά αντί να τερματίζονται αμέσως.
  • Διακόπτες κυκλώματος: Οι λειτουργίες HC και classic χρησιμοποιούν ξεχωριστούς διακόπτες κυκλώματος. Η εξάντληση της μιας λειτουργίας δεν επηρεάζει την άλλη.
  • Αρχική βάση δεδομένων: Οι συνδέσεις HC δεν εκτελούν την αρχική USE πρόταση για την Database παράμετρο. Εκτελέστε USE <database> μετά τη σύνδεση ή χρησιμοποιήστε πλήρως προσδιορισμένα ονόματα πινάκων.
  • Διαγνωστικός έλεγχος: Ρύθμιση LogLevel=DEBUG για καταγραφή αποφάσεων απόκτησης, ανίχνευσης, έκδοσης και αντιστοίχισης σφαλμάτων HC. Για εστιασμένη αντιμετώπιση προβλημάτων, ρυθμίστε LIVY_HC_VERBOSE=1 ώστε να περιλαμβάνει επιπλέον καθαρισμένα διαγνωστικά HC HTTP.

Διαμόρφωση DSN

Σε Linux, ρυθμίστε τις παραμέτρους των ονομάτων προέλευσης δεδομένων (DSN) σε αρχεία INI αντί για το μητρώο των Windows.

Αρχείο Πεδίο εφαρμογής Πρόσβαση
/etc/odbc.ini DSN σε όλο το σύστημα Απαιτεί sudo
~/.odbc.ini DSN για συγκεκριμένους χρήστες Μόνο για τρέχοντες χρήστες

Δημιουργία DSN

Εάν ~/.odbc.ini υπάρχει, προσθέστε τη νέα ενότητα DSN χωρίς να αντικαταστήσετε το υπάρχον αρχείο. Αντιγράψτε το εγκατεστημένο πρότυπο μόνο όταν δημιουργείτε το αρχείο:

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

Επεξεργαστείτε ~/.odbc.ini με τις λεπτομέρειες του χώρου εργασίας 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

Επαληθεύστε το DSN

Παραθέστε τα ρυθμισμένα DSN και, στη συνέχεια, ελέγξτε τη σύνδεση:

odbcinst -q -s
isql -k -v "DSN=FabricDSN;"

Η isql εντολή απαιτεί τα εργαλεία γραμμής εντολών unixODBC. Η -k επιλογή χρησιμοποιεί SQLDriverConnect, το οποίο επιτρέπει στο πρόγραμμα οδήγησης να επεξεργάζεται χαρακτηριστικά σύνδεσης DSN.

Χρήση DSN σε εφαρμογές

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);

Παραδείγματα χρήσης

Δοκιμάστε μια σύνδεση με το isql

Ξεκινήστε μια αλληλεπιδραστική περίοδο λειτουργίας SQL:

isql -k -v "DSN=FabricDSN;"

Εκτελέστε ένα μόνο ερώτημα:

echo "SELECT 1 AS test" | isql -k -v "DSN=FabricDSN;" -b

Χρησιμοποιήστε το -k για Fabric DSN, ώστε να isql συνδέεται μέσω SQLDriverConnect αντί για SQLConnect.

Εργαστείτε με μεγάλα σύνολα αποτελεσμάτων

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()

Ανακαλύψτε σχήματα και πίνακες

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()

Αντιστοίχιση τύπου δεδομένων

Το πρόγραμμα οδήγησης αντιστοιχίζει τους τύπους δεδομένων Spark SQL σε τύπους ODBC SQL:

Τύπος Spark SQL Τύπος SQL ODBC Τύπος C/C++ Τύπος Python Τύπος .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_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 string
MAP SQL_VARCHAR SQLCHAR* Συμβολοσειρά JSON string
STRUCT SQL_VARCHAR SQLCHAR* Συμβολοσειρά JSON string

Διαφορές πλατφόρμας

Δυνατότητα Windows Linux
Διευθυντής οδηγού Διαχείριση προγραμμάτων οδήγησης ODBC της Microsoft unixODBC
Δυαδικό πρόγραμμα οδήγησης microsoftfabricodbc.dll libmicrosoftfabricodbc.so
Διαμόρφωση DSN Μητρώο και GUI των Windows /etc/odbc.ini και ~/.odbc.ini
Εγγραφή οδηγού Μητρώο και odbcad32.exe odbcinst -i -d -f
Πελάτης HTTP WinHTTP libcurl
TLS Ενσωματωμένη υποστήριξη των Windows OpenSSL
Έλεγχος ταυτότητας πιστοποιητικού ΚρυπτοAPI των Windows OpenSSL με αρχεία RS256 και PEM ή PFX
Αλληλεπιδραστικός έλεγχος Παράθυρο προγράμματος περιήγησης Δεν είναι διαθέσιμο σε διακομιστές χωρίς κεφάλι
Συσκευασία Πρόγραμμα εγκατάστασης MSI .deb, .rpm, ή .tar.gz πακέτο

Αντιμετώπιση προβλημάτων

Ο οδηγός δεν βρέθηκε

Πρόβλημα: Η σύνδεση αποτυγχάνει με [IM002] Data source name not found and no default driver specified.

Λύσεις:

  1. Επαληθεύστε την εγγραφή του προγράμματος οδήγησης εκτελώντας odbcinst -q -d.
  2. Βεβαιωθείτε ότι /usr/lib/libmicrosoftfabricodbc.so υπάρχει.
  3. Καταχωρίστε το πρόγραμμα οδήγησης εκτελώντας sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template.
  4. Εγκαταστήστε ξανά το πακέτο εκτελώντας sudo dpkg -i microsoft-fabric-odbc-driver-2.0.0-Linux.deb.

Ο οδηγός δεν βρέθηκε μετά από εγκατάσταση tarball

Πρόβλημα: Το πρόγραμμα οδήγησης είναι καταχωρημένο, αλλά η κοινόχρηστη βιβλιοθήκη δεν υπάρχει στην καταχωρημένη διαδρομή.

Λύσεις:

  1. Βεβαιωθείτε ότι /opt/microsoft/fabricodbc/lib/libmicrosoftfabricodbc.so υπάρχει.
  2. Επανάληψη sudo ./install.sh --prefix=/opt/microsoft/fabricodbc.
  3. Εάν χρησιμοποιήσατε ένα προσαρμοσμένο πρόθεμα, βεβαιωθείτε ότι η καταχωρημένη διαδρομή προγράμματος οδήγησης χρησιμοποιεί το ίδιο πρόθεμα.

Το DSN δεν βρέθηκε

Πρόβλημα: Η σύνδεση αποτυγχάνει με [IM002] Data source name not found.

Λύσεις:

  1. Επαληθεύστε τη ρύθμιση παραμέτρων DSN εκτελώντας odbcinst -q -s.
  2. Βεβαιωθείτε ότι το ~/.odbc.ini ή /etc/odbc.ini περιέχει την ενότητα DSN.
  3. Βεβαιωθείτε ότι η Driver τιμή ταιριάζει ακριβώς με το καταχωρημένο όνομα του προγράμματος οδήγησης.

Αποτυχίες σύνδεσης

Πρόβλημα: Το πρόγραμμα οδήγησης δεν μπορεί να συνδεθεί στο Fabric.

Λύσεις:

  1. Βεβαιωθείτε ότι το αναγνωριστικό χώρου εργασίας και το αναγνωριστικό lakehouse είναι έγκυρα GUID.
  2. Ελέγξτε τον έλεγχο ταυτότητας Azure CLI εκτελώντας .az account show
  3. Βεβαιωθείτε ότι έχετε τα απαιτούμενα δικαιώματα χώρου εργασίας Fabric.
  4. Ελέγξτε τη συνδεσιμότητα δικτύου και τις ρυθμίσεις διακομιστή μεσολάβησης.

Σφάλματα ελέγχου ταυτότητας

Πρόβλημα: Ο έλεγχος ταυτότητας Azure CLI αποτυγχάνει.

Λύσεις:

  1. Εκτελέστε az login για να ανανεώσετε τα διαπιστευτήριά σας.
  2. Ορίστε τη σωστή συνδρομή εκτελώντας az account set --subscription <subscription-id>.
  3. Ελέγξτε το διακριτικό εκτελώντας az account get-access-token --resource https://api.fabric.microsoft.com.
  4. Βεβαιωθείτε ότι ο λογαριασμός σας έχει τα απαιτούμενα δικαιώματα χώρου εργασίας Fabric.

Σφάλματα κοινόχρηστης βιβλιοθήκης

Πρόβλημα: Ο οδηγός αναφέρει error while loading shared libraries: libmicrosoftfabricodbc.so.

Λύσεις:

  1. Εγκαταστήστε ξανά το πακέτο εκτελώντας sudo dpkg -i microsoft-fabric-odbc-driver-2.0.0-Linux.deb.
  2. Βεβαιωθείτε ότι /usr/lib/libmicrosoftfabricodbc.so υπάρχει.
  3. Εκτελέστε sudo ldconfig για να ανανεώσετε την προσωρινή μνήμη της κοινόχρηστης βιβλιοθήκης.

Λήξη χρονικού ορίου ερωτήματος

Πρόβλημα: Λήξη χρονικού ορίου ερωτημάτων σε μεγάλους πίνακες.

Λύσεις:

  1. Προσθήκη LargeTableSupport=true στη συμβολοσειρά σύνδεσης.
  2. Προσαρμόστε PageSizeBytes το μέγεθος του αποτελέσματος.
  3. Προσθήκη EnableAsyncPrefetch=1 στη συμβολοσειρά σύνδεσης.
  4. Χρησιμοποιήστε έναν LIMIT όρο για να περιορίσετε το μέγεθος του αποτελέσματος.

Ενεργοποίηση καταγραφής

Ενεργοποίηση λεπτομερούς καταγραφής σε DSN:

[FabricDSN]
LogLevel = DEBUG
LogFile  = /tmp/fabric_odbc_debug.log

Εναλλακτικά, προσθέστε παραμέτρους καταγραφής στο συμβολοσειρά σύνδεσης:

LogLevel=DEBUG;LogFile=/tmp/fabric_odbc_debug.log;

Το πρόγραμμα οδήγησης υποστηρίζει τα ακόλουθα επίπεδα καταγραφής:

  • DEBUG: Περιλαμβάνει λεπτομερείς πληροφορίες εντοπισμού σφαλμάτων και είναι το πιο αναλυτικό επίπεδο καταγραφής προγράμματος οδήγησης.
  • INFO: Περιλαμβάνει γενικές πληροφορίες και είναι η προεπιλογή.
  • WARN: Περιλαμβάνει μόνο προειδοποιήσεις.
  • ERROR: Περιλαμβάνει μόνο σφάλματα.

Ενεργοποίηση ανίχνευσης unixODBC

Για διαγνωστικά κλήσεων ODBC χαμηλού επιπέδου, προσθέστε την ακόλουθη ρύθμιση παραμέτρων στο /etc/odbcinst.ini:

[ODBC]
Trace     = yes
TraceFile = /tmp/odbc_trace.log

Απενεργοποιήστε την ανίχνευση όταν ολοκληρώσετε την αντιμετώπιση προβλημάτων για να αποφύγετε περιττή επιβάρυνση απόδοσης.