Compartilhar via


Gerenciar arquivos em volumes com o Driver JDBC do Databricks

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