Freigeben über


Verwalten von Dateien in Unity-Katalogvolumes mit dem Databricks ODBC-Treiber (Simba)

Auf dieser Seite wird beschrieben, wie Sie Dateien in Unity-Katalogvolumes mithilfe des Databricks ODBC-Treibers hochladen, herunterladen und löschen.

Anforderungen

  • Databricks ODBC-Treiber, Version 2.8.2 oder höher
  • Nativer Abfragemodus aktiviert (Standard). Wenn sie deaktiviert ist, fügen Sie UseNativeQuery=1 oder UseNativeQuery=2 Ihrer Verbindungszeichenfolge hinzu.

Ein vollständiges Python-Beispiel mit Authentifizierungseinrichtung finden Sie unter Connect Python und Pyodbc mit Azure Databricks.

Hochladen einer Datei

Um eine Datei hochzuladen, fügen Sie die StagingAllowedLocalPaths Eigenschaft zu Ihrer Verbindungszeichenfolge mit dem Pfad der Datei hinzu, die hochgeladen werden soll. Verwenden Sie für mehrere Quellspeicherorte eine durch Trennzeichen getrennte Liste (z. B /tmp/,/usr/tmp/. ).

Von Bedeutung

In Mandantenumgebungen, in denen Benutzer die ODBC-URL (z. B. BI-Tools oder Entwicklerdienste) steuern, legen Sie StagingAllowedLocalPaths auf eine Sandbox-Umgebung oder einen nicht vorhandenen Pfad fest. Dadurch wird verhindert, dass Benutzer beliebige Dateien schreiben und die interne Bereitstellung des Diensts beeinträchtigen.

Um eine vorhandene Datei zu überschreiben, fügen Sie OVERWRITE zur Anweisung hinzu.

conn_string = "".join([
    "DRIVER=", os.getenv("ODBC_DRIVER", "/Library/simba/spark/lib/libsparkodbc_sbu.dylib"),
    ";Host=", os.getenv("ODBC_HOST_NAME", "<<HOST_NAME>>"),
    ";PORT=443",
    ";HTTPPath=", os.getenv("ODBC_HTTP_PATH", "/sql/1.0/endpoints/1234567890"),
    ";AuthMech=11",
    ";SSL=1",
    ";ThriftTransport=2",
    ";SparkServerType=3",
    ";Auth_Flow=0",
    ";Auth_AccessToken=", os.getenv("API_TOKEN", "<<NO_ACCESS_TOKEN_IS_SET>>"),
    ";StagingAllowedLocalPaths=", "/tmp"),
    os.getenv("ODBC_OPTIONS", ""),
])

conn = pyodbc.connect(conn_string, autocommit=True)
cursor = conn.cursor()
cursor.execute("PUT '" +
    "/tmp/my-data.csv" +
    "' INTO '" +
    "/Volumes/main/default/my-volume/my-data.csv" +
    "' OVERWRITE")

Herunterladen einer Datei

Wird GET verwendet, um eine Datei von einem Volume in einen lokalen Pfad herunterzuladen:

conn = pyodbc.connect(conn_string, autocommit=True)
cursor = conn.cursor()
cursor.execute("GET '" +
    "/Volumes/main/default/my-volume/my-data.csv" +
    "' TO '" +
    "/tmp/my-downloaded-data.csv" +
    "'")

Löschen einer Datei

Verwenden Sie REMOVE, um eine Datei aus einem Volume zu löschen.

conn = pyodbc.connect(conn_string, autocommit=True)
cursor = conn.cursor()
cursor.execute("REMOVE '" +
    "/Volumes/main/default/my-volume/my-data.csv" +
    "'")