Partager via


Gérer des fichiers dans des volumes Unity Catalog avec le pilote ODBC Databricks

Cet article explique comment charger, télécharger et supprimer des fichiers dans des volumes Unity Catalog à l’aide du pilote ODBC Databricks.

Spécifications

  • Pilote ODBC Databricks versions 2.8.2 ou ultérieures.
  • Par défaut, le mode de requête native est activé. Sinon, ajoutez la propriété UseNativeQuery à la chaîne de connexion ODBC, en définissant sa valeur sur 1 ou 2.

Charger un fichier

Pour charger un fichier dans un volume, vous devez ajouter la propriété StagingAllowedLocalPaths à la chaîne de connexion ODBC, en définissant la valeur de cette propriété sur le chemin d’accès du fichier à charger. Pour charger plusieurs fichiers à partir d’emplacements distincts, définissez cette propriété sur une liste de chemins séparés par des virgules, par exemple /tmp/,/usr/tmp/.

Pour remplacer le contenu d’un fichier existant dans l’emplacement de chargement spécifié, ajoutez OVERWRITE.

L’extrait de code Python suivant montre comment charger un fichier sur 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")

Télécharger un fichier

L’extrait de code Python suivant montre comment télécharger un fichier à partir d’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" +
    "'")

Supprimer un fichier

L’extrait de code Python suivant montre comment 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" +
    "'")