Gerenciar arquivos em volumes com o driver Databricks JDBC (OSS)
Databricks oferece recursos de ingestão em massa usando volumes Unity Catalog, o que permite aos usuários transferir conjuntos de dados de e para arquivos locais, como arquivos CSV. Consulte O que são volumes do Unity Catalog?
Este artigo descreve como gerenciar arquivos em volumes, bem como a transmissão de leitura e gravação de e para volumes, usando o driverDatabricks JDBC (OSS).
Habilitar operações de volume
Para ativar as operações de volume do Unity Catalog, defina a propriedade de conexão VolumeOperationAllowedLocalPaths
como uma lista separada por vírgulas de caminhos locais permitidos para as operações de volume. Veja outras propriedades de recurso
O Unity Catalog deve estar ativado para usar esse recurso. Funcionalidade semelhante está disponível usando a interface do usuário do Databricks. Consulte Fazer upload de arquivos para um volume do Unity Catalog.
O comando de ingestão Unity Catalog são declarações SQL. Os exemplos abaixo demonstram as operações PUT, GET e REMOVE.
Fazer upload de um arquivo local
Para upload um arquivo local /tmp/test.csv
em um caminho de volume Unity Catalog como /Volumes/main/default/e2etests/file1.csv
, use as operações PUT:
PUT '/tmp/test.csv' INTO '/Volumes/main/default/e2etests/file1.csv' OVERWRITE
baixar um arquivo
Para download um arquivo do caminho do volume Unity Catalog /Volumes/main/default/e2etests/file1.csv
em um arquivo local /tmp/test.csv
, use as operações GET:
GET '/Volumes/main/default/e2etests/file1.csv' TO '/tmp/test.csv'
Excluir um arquivo
Para excluir um arquivo com um caminho de volume Unity Catalog /Volumes/main/default/e2etests/file1.csv
, use as operações REMOVE:
REMOVE '/Volumes/main/default/e2etests/file1.csv'
Leitura/gravação uso de dados a transmissão
O driver JDBC oferece suporte à transmissão para ler e gravar dados de e para volumes Unity Catalog, fornecendo a interface IDatabricksVolumeClient
. Consulte a referência do IDatabricksVolumeClient para obter as APIs disponíveis.
O IDatabricksVolumeClient
pode ser inicializado usando as utilidades de fábrica do 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 a partir de uma transmissão
Connection connection = DriverManager.getConnection(url, prop);
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 uma transmissão
import org.apache.http.entity.InputStreamEntity;
Connection connection = DriverManager.getConnection(url, prop);
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);