Pular para o conteúdo principal

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:

Text
  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:

Text
  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:

Text
  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:

Java
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

Java
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

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