Condividi tramite


Gestire i file nei volumi di Unity Catalog con il driver ODBC di Databricks

Questo articolo descrive come caricare, scaricare ed eliminare file nei volumi di Unity Catalog usando il driver ODBC di Databricks.

Requisiti

  • Driver ODBC di Databricks versione 2.8.2 o successiva.
  • Per impostazione predefinita, la modalità query nativa è abilitata. In caso contrario, aggiungere UseNativeQuery la proprietà al stringa di connessione ODBC, impostandone il valore su 1 o 2.

Caricare un file

Per caricare un file in un volume, è necessario aggiungere la StagingAllowedLocalPaths proprietà al stringa di connessione ODBC, impostando il valore di questa proprietà sul percorso del file da caricare. Per caricare più file da percorsi separati, impostare questa proprietà su un elenco delimitato da virgole di percorsi, ad esempio /tmp/,/usr/tmp/.

Per eseguire l'override del contenuto di qualsiasi file esistente nel percorso di caricamento specificato, aggiungere OVERWRITE.

Il frammento di codice Python seguente illustra come caricare un file in un volume.

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

Scaricare un file

Il frammento di codice Python seguente illustra come scaricare un file da un volume.

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" +
    "'")

Eliminare un file

Il frammento di codice Python seguente illustra come eliminare un file da un volume.

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