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