Gérez les fichiers dans les volumes Unity Catalog avec le Driver ODBC Databricks
Cette page décrit comment upload, download et supprimer des fichiers dans les volumes Unity Catalog à l'aide du Driver ODBC Databricks.
Exigences
- Driver ODBC Databricks version 2.8.2 ou supérieure.
- Mode query natif activé (default). Si cette option est désactivée, ajoutez
UseNativeQuery=1ouUseNativeQuery=2à votre chaîne de connexion.
Pour un exemple complet Python avec configuration de l'authentification, voir Connecter Python et pyodbc à Databricks.
upload a file
Pour upload un fichier, ajoutez la propriété StagingAllowedLocalPaths à votre chaîne de connexion avec le chemin d'accès du fichier à upload. Pour plusieurs emplacements source, utilisez une liste séparée par des virgules (par exemple, /tmp/,/usr/tmp/).
Dans les environnements multi-tenant où les utilisateurs contrôlent l'URL ODBC (tels que les outils de BI ou les services de développement), définissez StagingAllowedLocalPaths à un emplacement sandbox ou à un chemin d'accès inexistant. Cela empêche les utilisateurs d'écrire des fichiers arbitraires et d'interférer avec le déploiement interne du service.
Pour remplacer un fichier existant, ajoutez OVERWRITE à l'instruction.
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")
download a file
Utilisez GET pour download un fichier d'un volume vers un chemin local :
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" +
"'")
Supprimer un fichier
Utilisez REMOVE pour supprimer un fichier d'un volume :
conn = pyodbc.connect(conn_string, autocommit=True)
cursor = conn.cursor()
cursor.execute("REMOVE '" +
"/Volumes/main/default/my-volume/my-data.csv" +
"'")