Partilhar via


Gerencie arquivos em volumes com o Databricks JDBC Driver

O Databricks oferece recursos de ingestão em massa usando volumes do Unity Catalog, que permite aos usuários transferir conjuntos de dados de e para arquivos locais, como arquivos CSV. Consulte Quais são os volumes do Catálogo Unity?.

Este artigo descreve como gerenciar arquivos em volumes, bem como ler e gravar fluxos de e para volumes, usando o Databricks JDBC Driver, versão 3 e superior.

Habilitar operações de volume

Para habilitar as operações de volume do Catálogo Unity, defina a propriedade de conexão VolumeOperationAllowedLocalPaths como uma lista separada por vírgulas de caminhos locais permitidos para as operações de volume. Consulte Outras propriedades da funcionalidade

O Catálogo Unity deve estar habilitado para usar esse recurso. Funcionalidade semelhante está disponível usando a interface do usuário do Databricks. Consulte Carregar ficheiros para um volume do Catálogo Unity.

Os comandos de ingestão do Unity Catalog são instruções SQL. Os exemplos abaixo demonstram operações PUT, GETe REMOVE.

Carregar um ficheiro local

Para carregar o arquivo local /tmp/test.csv no caminho de volume do Catálogo Unity como /Volumes/main/default/e2etests/file1.csv, use a operação PUT.

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

Descarregar um ficheiro

Para baixar um ficheiro do caminho de volume do Unity Catalog /Volumes/main/default/e2etests/file1.csv para um ficheiro local /tmp/test.csv, use a operação GET:

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

Eliminar um ficheiro

Para eliminar um ficheiro com um caminho de volume do Unity Catalog /Volumes/main/default/e2etests/file1.csv, use a operação REMOVE:

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

Leitura/gravação de dados usando um fluxo

O driver JDBC suporta streaming para ler e gravar dados de e para volumes do Catálogo Unity fornecendo a interface IDatabricksVolumeClient. Consulte IDatabricksVolumeClient reference para obter as APIs disponíveis.

O IDatabricksVolumeClient pode ser inicializado usando o DatabricksVolumeClientFactory utilitário de fábrica:

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

IDatabricksVolumeClient volumeClient = DatabricksVolumeClientFactory.getVolumeClient(Connection conn);

Gravar um arquivo em um volume a partir de um fluxo

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

Ler um arquivo de volume como um fluxo

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