Freigeben über


Dateien in Speicherbereichen mit dem Databricks JDBC-Treiber verwalten

Databricks bietet Massenimportfunktionen mithilfe von Unity-Katalogvolumes, mit denen Benutzer Datasets in und aus lokalen Dateien wie CSV-Dateien übertragen können. Weitere Informationen finden Sie unter Was sind Unity Catalog-Volumes?.

In diesem Artikel wird beschrieben, wie Sie Dateien in Volumes verwalten sowie Datenströme in und aus Volumes lesen und schreiben, indem Sie den Databricks JDBC-Treiber ab Version 3 verwenden.

Aktivieren von Volumevorgängen

Um Unity Catalog-Volumevorgänge zu aktivieren, legen Sie die Verbindungseigenschaft VolumeOperationAllowedLocalPaths auf eine durch Trennzeichen getrennte Liste zulässiger lokaler Pfade für die Volumevorgänge fest. Weitere Merkmaleigenschaften anzeigen

Unity-Katalog muss für die Verwendung dieses Features aktiviert sein. Ähnliche Funktionen sind über die Databricks-Benutzeroberfläche verfügbar. Weitere Informationen finden Sie unter Hochladen von Dateien auf ein Unity Catalog-Volume.

Die Befehle für die Aufnahme des Unity-Katalogs sind SQL-Anweisungen. Die folgenden Beispiele veranschaulichen PUT, GETund REMOVE Vorgänge.

Hochladen einer lokalen Datei

Verwenden Sie den PUT-Vorgang, um eine lokale Datei /tmp/test.csv in einen Unity-Katalogvolumepfad /Volumes/main/default/e2etests/file1.csvhochzuladen:

  PUT '/tmp/test.csv' INTO '/Volumes/main/default/e2etests/file1.csv' OVERWRITE

Herunterladen einer Datei

Verwenden Sie den /Volumes/main/default/e2etests/file1.csv Vorgang, um eine Datei aus dem Unity-Katalogvolumepfad /tmp/test.csv in eine lokale Datei GETherunterzuladen:

  GET '/Volumes/main/default/e2etests/file1.csv' TO '/tmp/test.csv'

Löschen einer Datei

Um eine Datei mit einem Unity Catalog-Volumepfad /Volumes/main/default/e2etests/file1.csvzu löschen, verwenden Sie den REMOVE Vorgang:

  REMOVE '/Volumes/main/default/e2etests/file1.csv'

Lesen/Schreiben von Daten mithilfe eines Datenstroms

Der JDBC-Treiber unterstützt das Streaming zum Lesen und Schreiben von Daten aus und in Unity-Katalog-Volumes, indem die Schnittstelle IDatabricksVolumeClient bereitgestellt wird. Siehe IDatabricksVolumeClient-Referenz für verfügbare APIs.

IDatabricksVolumeClient kann mithilfe des Factory-Hilfsprogramms DatabricksVolumeClientFactory initialisiert werden:

import com.databricks.jdbc.api.impl.volume.DatabricksVolumeClientFactory;
import com.databricks.jdbc.api.volume.IDatabricksVolumeClient;

IDatabricksVolumeClient volumeClient = DatabricksVolumeClientFactory.getVolumeClient(Connection conn);

Schreiben einer Datei in ein Volume aus einem Stream

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

Lesen einer Volumedatei als Stream

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