Partager via


Gérer des fichiers dans des volumes de catalogue Unity avec le pilote ODBC Databricks (Simba)

Cette page explique comment charger, télécharger et supprimer des fichiers dans des volumes de catalogue Unity à l’aide du pilote ODBC Databricks.

Spécifications

  • Databricks ODBC Driver version 2.8.2 ou ultérieure
  • Mode de requête natif activé (par défaut). Si elle est désactivée, ajoutez UseNativeQuery=1 ou UseNativeQuery=2 à votre chaîne de connexion.

Pour obtenir un exemple Python complet avec la configuration de l’authentification, consultez Connecter Python et pyodbc à Azure Databricks.

Charger un fichier

Pour charger un fichier, ajoutez la StagingAllowedLocalPaths propriété à votre chaîne de connexion avec le chemin d’accès du fichier à charger. Pour plusieurs emplacements sources, utilisez une liste séparée par des virgules (par exemple, /tmp/,/usr/tmp/).

Important

Dans les environnements multilocataires où les utilisateurs contrôlent l’URL ODBC (par exemple, les outils décisionnels ou les services de développement), l’utilisateur définit StagingAllowedLocalPaths sur un emplacement sandbox ou un chemin 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")

Télécharger un fichier

Permet GET de télécharger un fichier à partir d’un volume vers un chemin d’accès 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

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