Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Databricks oferece recursos de ingestão em massa usando volumes do Catálogo do Unity, o que permite que os usuários transfiram conjuntos de dados de e para arquivos locais, como arquivos CSV. Confira O que são volumes do Unity Catalog?.
Este artigo descreve como gerenciar arquivos em volumes, bem como ler e gravar fluxos de e para volumes, usando o Driver JDBC do Databricks, versão 3 e superior.
Habilitar operações de volume
Para habilitar as operações de volume do Catálogo do 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. Ver Outras propriedades de recurso
O Catálogo do Unity deve estar habilitado para usar esse recurso. Funcionalidade semelhante está disponível usando a interface do usuário do Databricks. Confira Carregar arquivos em um volume do Catálogo do Unity.
Os comandos de ingestão do Catálogo do Unity são instruções SQL. Os exemplos abaixo demonstram operações PUT, GET e REMOVE.
Carregar um arquivo local
Para carregar um arquivo /tmp/test.csv local em um caminho de volume do Catálogo do 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
Baixar um arquivo
Para baixar um arquivo do caminho de volume /Volumes/main/default/e2etests/file1.csv do Catálogo do Unity em um arquivo /tmp/test.csv local, use a operação GET:
GET '/Volumes/main/default/e2etests/file1.csv' TO '/tmp/test.csv'
Excluir um arquivo
Para excluir um arquivo em um caminho de volume do Catálogo do Unity /Volumes/main/default/e2etests/file1.csv, use a operação REMOVE:
REMOVE '/Volumes/main/default/e2etests/file1.csv'
Ler/gravar dados usando um fluxo de dados
O driver JDBC dá suporte ao streaming para ler e gravar dados em volumes do Catálogo do Unity fornecendo a interface IDatabricksVolumeClient. Consulte a referência de IDatabricksVolumeClient para as APIs disponíveis.
O IDatabricksVolumeClient pode ser inicializado usando o utilitário 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);
Gravar um arquivo em um volume por meio 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);