Управление файлами в томах каталога Unity с помощью драйвера JDBC Databricks (Simba)

Примечание.

Эта страница относится к драйверу JDBC Simba (устаревшая версия), версиям ниже версии 3. Databricks настоятельно рекомендует перейти на драйвер JDBC Databricks для подключения JDBC . Она включает такие улучшения, как поддержка представлений метрик каталога Unity, транзакции, охватывающие несколько инструкций SQL, хранимые процедуры, более быстрое получение больших результатов и встроенная телеметрия клиента.

На этой странице описывается, как отправлять, скачивать и удалять файлы в томах каталога Unity с помощью драйвера JDBC Databricks.

Требования

  • Databricks JDBC Driver версии 2.6.38 или более поздней
  • Режим нативного запроса включен (по умолчанию). При отключении добавьте UseNativeQuery=1 или UseNativeQuery=2 в строку подключения.

Полный пример Java с настройкой проверки подлинности см. в разделе "Параметры проверки подлинности" для драйвера JDBC Databricks (Simba).

Отправка файла

Чтобы загрузить файл, добавьте свойство StagingAllowedLocalPaths в строку подключения с путем к файлу для загрузки. Для нескольких исходных расположений используйте разделенный запятыми список (например, /tmp/,/usr/tmp/).

Это важно

В мультитенантных средах, где пользователи управляют URL-адресом JDBC (например, средства бизнес-аналитики или службами разработчиков), задайте StagingAllowedLocalPaths расположение песочницы или несуществующий путь. Это предотвращает пользователей от записи произвольных файлов и вмешательства во внутреннее развертывание службы.

Чтобы перезаписать существующий файл, добавьте OVERWRITE его в инструкцию.

// ...
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")
// ...

Скачивание файла

Используется GET для скачивания файла из тома в локальный путь:

// ...
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" +
                  "'")
// ...

Удаление файла

Используется REMOVE для удаления файла из тома:

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

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