Gerenciar arquivos em volumes do Catálogo do Unity com o Simba (Driver JDBC) do Databricks

Observação

Esta página se aplica ao Driver JDBC do Simba (Herdado), versões abaixo da versão 3. O Databricks recomenda fortemente a migração para o Driver JDBC do Databricks para conectividade JDBC. Ele inclui melhorias, como suporte para visualizações de métricas do Unity Catalog, transações que abrangem várias instruções SQL, procedimentos armazenados, recuperação de grandes resultados mais rápida e telemetria de cliente integrada.

Esta página descreve como carregar, baixar e excluir arquivos em volumes do Catálogo do Unity usando o Driver JDBC do Databricks.

Requisitos

  • Databricks JDBC Driver versão 2.6.38 ou superior
  • Modo de consulta nativo habilitado (padrão). Se estiver desabilitado, adicione UseNativeQuery=1 ou UseNativeQuery=2 à cadeia de conexão.

Para obter um exemplo de Java completo com configuração de autenticação, consulte as configurações de autenticação para o Simba (Driver JDBC) do Databricks.

Fazer upload de um arquivo

Para carregar um arquivo, adicione a StagingAllowedLocalPaths propriedade à cadeia de conexão com o caminho do arquivo a ser carregado. Para vários locais de origem, use uma lista separada por vírgulas (por exemplo, /tmp/,/usr/tmp/).

Importante

Em ambientes multilocatários em que os usuários controlam a URL JDBC (como ferramentas de BI ou serviços de desenvolvedor), definido StagingAllowedLocalPaths como um local de área restrita ou caminho inexistente. Isso impede que os usuários gravem arquivos arbitrários e interfiram na implantação interna do serviço.

Para substituir um arquivo existente, adicione OVERWRITE à instrução.

// ...
p.put("StagingAllowedLocalPaths", "/tmp/");

Connection conn = DriverManager.getConnection(url, p);
Statement stmt = conn.createStatement();

stmt.executeQuery("PUT '" +
                  "/tmp/my-data.csv" +
                  "' INTO '" +
                  "/Volumes/main/default/my-volume/my-data.csv" +
                  "' OVERWRITE")
// ...

Baixar um arquivo

Use GET para baixar um arquivo de um volume para um caminho local:

// ...
Connection conn = DriverManager.getConnection(url, p);
Statement stmt = conn.createStatement();

stmt.executeQuery("GET '" +
                  "/Volumes/main/default/my-volume/my-data.csv" +
                  "' TO '" +
                  "/tmp/my-downloaded-data.csv" +
                  "'")
// ...

Excluir um arquivo

Use REMOVE para excluir um arquivo de um volume:

// ...
Connection conn = DriverManager.getConnection(url, p);
Statement stmt = conn.createStatement();

stmt.executeQuery("REMOVE '" +
                  "/Volumes/main/default/my-volume/my-data.csv" +
                  "'")
// ...