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);
Interface iDatabricksVolumeClient
O prefixo existe |
---|
Determina se existe um prefixo específico (estrutura semelhante a uma pasta) no volume do Unity Catalog. O prefixo deve fazer parte do nome do arquivo. Parâmetros:
Devoluções: Um booleano que indica se o prefixo existe ou não. |
O objeto existe |
---|
Determina se um objeto específico (arquivo) existe no volume do Unity Catalog. O objeto deve corresponder exatamente ao nome do arquivo. Parâmetros:
Devoluções: Um booleano que indica se o objeto existe ou não. |
O volume existe |
---|
Determina se existe um volume específico no catálogo e no esquema fornecidos. O volume deve corresponder exatamente ao nome do volume. Parâmetros:
Devoluções: Um booleano que indica se o volume existe ou não. |
Listar objetos |
---|
Retorna a lista de todos os nomes de arquivos no volume Unity Catalog que começam com um prefixo especificado. O prefixo deve fazer parte do caminho do arquivo do volume como raiz. Parâmetros:
Devoluções: Uma lista de strings indicando os nomes de arquivos que começam com o prefixo especificado. |
GetObject (arquivo) |
---|
Recupera um objeto (arquivo) do volume do Unity Catalog e o armazena no caminho local especificado. Parâmetros:
Devoluções: Um valor booleano que indica o status das operações GET. |
getObject (transmissão) |
---|
Recupera um objeto como uma transmissão de entrada do volume Unity Catalog. Parâmetros:
Devoluções: Uma instância da entidade de transmissão de entrada. |
PutObject (arquivo) |
---|
Faz o upload de dados de um caminho local para um caminho especificado em um volume do Unity Catalog. Parâmetros:
Devoluções: Um valor booleano que indica o status das operações PUT. |
putObject (transmissão) |
---|
carregar dados de uma transmissão de entrada para um caminho especificado em um volume Unity Catalog. Parâmetros:
Devoluções: Um valor booleano que indica o status das operações PUT. |
Excluir objeto |
---|
Remove um objeto de um caminho especificado em um volume do Unity Catalog. Parâmetros:
Devoluções: Um valor booleano que indica o status das operações DELETE. |