Gérez les fichiers dans les volumes avec le Driver JDBC Databricks
Databricks offre des capacités d'ingestion en masse à l'aide des volumes Unity Catalog, ce qui permet aux utilisateurs de transférer des datasets vers et depuis des fichiers locaux comme les fichiers CSV. Consultez Que sont les volumes Unity Catalog ?.
Cet article décrit comment gérer les fichiers dans les volumes, ainsi que comment lire et écrire des Stream vers et depuis les volumes, à l'aide du Driver JDBC Databricks, version 3 et supérieure.
Activer les opérations de volume
Pour activer les opérations de volume Unity Catalog, définissez la propriété de connexion VolumeOperationAllowedLocalPaths sur une liste de chemins d'accès locaux autorisés, séparés par des virgules, pour les opérations de volume. Voir les autres propriétés de fonctionnalité
Unity Catalog doit être activé pour utiliser cette fonctionnalité. Des fonctionnalités similaires sont disponibles via l'interface utilisateur de Databricks. Consultez Travailler avec les fichiers dans les volumes Unity Catalog.
Les commandes d'ingestion Unity Catalog sont des instructions SQL. Les exemples ci-dessous illustrent les opérations PUT, GET et REMOVE.
upload a local file
Pour upload un fichier local /tmp/test.csv dans un chemin de volume Unity Catalog en tant que /Volumes/main/default/e2etests/file1.csv, utilisez l'opération PUT :
PUT '/tmp/test.csv' INTO '/Volumes/main/default/e2etests/file1.csv' OVERWRITE
download a file
Pour download un fichier du chemin d'accès du volume Unity Catalog /Volumes/main/default/e2etests/file1.csv vers un fichier local /tmp/test.csv, utilisez l'Opération GET :
GET '/Volumes/main/default/e2etests/file1.csv' TO '/tmp/test.csv'
Supprimer un fichier
Pour supprimer un fichier avec un chemin d'accès au volume Unity Catalog /Volumes/main/default/e2etests/file1.csv, utilisez l'opération REMOVE :
REMOVE '/Volumes/main/default/e2etests/file1.csv'
Lire/écrire des données à l'aide d'un Stream
Le driver JDBC prend en charge le streaming pour lire et écrire des données depuis et vers les volumes Unity Catalog en fournissant l'interface IDatabricksVolumeClient. Voir la référence IDatabricksVolumeClient pour les APIs disponibles.
Le IDatabricksVolumeClient peut être initialisé à l’aide de l’utilitaire d’usine DatabricksVolumeClientFactory :
import com.databricks.jdbc.api.impl.volume.DatabricksVolumeClientFactory;
import com.databricks.jdbc.api.volume.IDatabricksVolumeClient;
IDatabricksVolumeClient volumeClient = DatabricksVolumeClientFactory.getVolumeClient(Connection conn);
Écrire un fichier dans un volume à partir d'un Stream
// Create the connection and enable the volume operations.
Connection connection = DriverManager.getConnection(url, prop);
connection.setClientInfo("enableVolumeOperations", "1");
File file = new File("/tmp/test.csv");
FileInputStream fileInputStream = new FileInputStream(file);
// Upload the file stream to UC Volume path
IDatabricksVolumeClient volumeClient = DatabricksVolumeClientFactory.getVolumeClient(Connection conn);
volumeClient.putObject(catalog, schema, volume, objectPath, inputStream, contentLength, true /* overwrite */);
Lire un fichier de volume en tant que Stream
import org.apache.http.entity.InputStreamEntity;
// Create the connection and enable the volume operations.
Connection connection = DriverManager.getConnection(url, prop);
connection.setClientInfo("enableVolumeOperations", "1");
File file = new File("/tmp/test.csv");
FileInputStream fileInputStream = new FileInputStream(file);
// Upload the file stream to UC Volume path
IDatabricksVolumeClient volumeClient = DatabricksVolumeClientFactory.getVolumeClient(Connection conn);
InputStreamEntity volumeDataStream = volumeClient.getObject(catalog, schema, volume, objectPath);