Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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);