Partager via


Gérer des fichiers dans des volumes avec le pilote JDBC Databricks

Databricks offre des fonctionnalités d’ingestion en bloc à l’aide de volumes de catalogue Unity, ce qui permet aux utilisateurs de transférer des jeux de données vers et à partir de fichiers locaux tels que des fichiers CSV. Découvrez quels sont les volumes du catalogue Unity ?.

Cet article explique comment gérer des fichiers dans des volumes, ainsi que lire et écrire des flux vers et depuis des volumes, à l’aide du pilote JDBC Databricks, version 3 et ultérieure.

Activer les opérations de volume

Pour activer les opérations de volume du catalogue Unity, définissez la propriété de connexion VolumeOperationAllowedLocalPaths sur une liste séparée par des virgules des chemins locaux autorisés pour les opérations de volume. Afficher d’autres propriétés de fonctionnalité

Le catalogue Unity doit être activé pour utiliser cette fonctionnalité. Des fonctionnalités similaires sont disponibles à l’aide de l’interface utilisateur Databricks. Consultez Charger des fichiers dans un volume Unity Catalog.

Les commandes d’ingestion du catalogue Unity sont des instructions SQL. Les exemples ci-dessous illustrent les opérations PUT, GETet REMOVE.

Charger un fichier local

Pour charger un fichier local /tmp/test.csv dans un chemin de volume du catalogue Unity 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

Téléchargement d’un fichier

Pour télécharger un fichier depuis le chemin 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 de 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 flux

Le pilote JDBC prend en charge la lecture et la diffusion en continu des données à partir de et vers les volumes Unity Catalog en fournissant l’interface IDatabricksVolumeClient. Consultez la référence IDatabricksVolumeClient pour les API disponibles.

Le IDatabricksVolumeClient peut être initialisé à l’aide de l’utilitaire DatabricksVolumeClientFactory de fabrique :

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 flux

// 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 volumique en flux

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);