Aller au contenu principal

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=1 ou UseNativeQuery=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/).

important

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.

Python
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 :

Python
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 :

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