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

Remarque

Cette page s’applique au pilote JDBC Simba (hérité), versions antérieures à la version 3. Databricks recommande vivement la migration vers le pilote JDBC Databricks pour la connectivité JDBC. Il inclut des améliorations telles que la prise en charge des vues de métriques du catalogue Unity, les transactions qui s’étendent sur plusieurs instructions SQL, procédures stockées, récupération de résultats volumineuses plus rapides et données de télémétrie client intégrées.

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

Spécifications

  • Databricks JDBC Driver version 2.6.38 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 Java complet avec la configuration de l’authentification, consultez les paramètres d’authentification pour le pilote JDBC Databricks (Simba) .

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 JDBC (par exemple, les outils décisionnels ou les services de développement), vous devez définir StagingAllowedLocalPaths à un emplacement en bac à sable 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.

// ...
p.put("StagingAllowedLocalPaths", "/tmp/");

Connection conn = DriverManager.getConnection(url, p);
Statement stmt = conn.createStatement();

stmt.executeQuery("PUT '" +
                  "/tmp/my-data.csv" +
                  "' INTO '" +
                  "/Volumes/main/default/my-volume/my-data.csv" +
                  "' OVERWRITE")
// ...

Téléchargement d’un fichier

Permet GET de télécharger un fichier à partir d’un volume vers un chemin d’accès local :

// ...
Connection conn = DriverManager.getConnection(url, p);
Statement stmt = conn.createStatement();

stmt.executeQuery("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 :

// ...
Connection conn = DriverManager.getConnection(url, p);
Statement stmt = conn.createStatement();

stmt.executeQuery("REMOVE '" +
                  "/Volumes/main/default/my-volume/my-data.csv" +
                  "'")
// ...