Compartir a través de


Administración de archivos en volúmenes con el controlador JDBC de Databricks

Databricks ofrece funcionalidades de ingesta masiva mediante volúmenes de Catálogo de Unity, lo que permite a los usuarios transferir conjuntos de datos a archivos locales y desde ellos, como archivos CSV. Consulte ¿Qué son los volúmenes de Unity Catalog?.

En este artículo se describe cómo administrar archivos en volúmenes, así como secuencias de lectura y escritura en volúmenes y desde ellos, mediante el controlador JDBC de Databricks, versión 3 y posteriores.

Habilitación de las operaciones de volumen

Para habilitar las operaciones de volumen del catálogo de Unity, configure la propiedad de conexión VolumeOperationAllowedLocalPaths con una lista de rutas locales permitidas, separadas por comas, para las operaciones de volumen. Consulte Otras propiedades de características.

El catálogo de Unity debe estar habilitado para usar esta característica. La funcionalidad similar está disponible mediante la interfaz de usuario de Databricks. Consulte Cargar archivos en un volumen de Unity Catalog.

Los comandos de ingesta del catálogo de Unity son instrucciones SQL. En los ejemplos siguientes se muestran las operaciones PUT, GETy REMOVE .

Carga de un archivo local

Para cargar un archivo local /tmp/test.csv en una ruta de acceso de volumen del catálogo de Unity como /Volumes/main/default/e2etests/file1.csv, use la operación PUT:

  PUT '/tmp/test.csv' INTO '/Volumes/main/default/e2etests/file1.csv' OVERWRITE

Descargar un archivo

Para descargar un archivo de la ruta de acceso /Volumes/main/default/e2etests/file1.csv al volumen de Unity Catalog en un archivo local /tmp/test.csv, use la operación GET:

  GET '/Volumes/main/default/e2etests/file1.csv' TO '/tmp/test.csv'

Eliminar un archivo

Para eliminar un archivo con una ruta de acceso de volumen /Volumes/main/default/e2etests/file1.csv del catálogo de Unity, use la operación REMOVE:

  REMOVE '/Volumes/main/default/e2etests/file1.csv'

Lectura y escritura de datos mediante una secuencia

El controlador JDBC admite el streaming para leer y escribir datos de y hacia volúmenes del catálogo de Unity proporcionando la interfaz IDatabricksVolumeClient. Consulte la referencia de IDatabricksVolumeClient para obtener las API disponibles.

IDatabricksVolumeClient se puede inicializar utilizando la utilidad de fábrica DatabricksVolumeClientFactory

import com.databricks.jdbc.api.impl.volume.DatabricksVolumeClientFactory;
import com.databricks.jdbc.api.volume.IDatabricksVolumeClient;

IDatabricksVolumeClient volumeClient = DatabricksVolumeClientFactory.getVolumeClient(Connection conn);

Escribir un archivo en un volumen desde un flujo

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

Leer un archivo de volumen como una secuencia

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