Class DBFSVolumeClient
- java.lang.Object
-
- com.databricks.jdbc.api.impl.volume.DBFSVolumeClient
-
- All Implemented Interfaces:
IDatabricksVolumeClient,Closeable,AutoCloseable
public class DBFSVolumeClient extends Object implements IDatabricksVolumeClient, Closeable
Implementation of Volume Client that directly calls SQL Exec API for the Volume Operations
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classDBFSVolumeClient.UploadRequestRequest class that holds all necessary information for either file or stream uploads.
-
Constructor Summary
Constructors Constructor Description DBFSVolumeClient(IDatabricksConnectionContext connectionContext)DBFSVolumeClient(com.databricks.sdk.WorkspaceClient workspaceClient)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()booleandeleteObject(String catalog, String schema, String volume, String objectPath)Deletes an object from a specified path within a UC Volume.org.apache.http.entity.InputStreamEntitygetObject(String catalog, String schema, String volume, String objectPath)Retrieves an object as an input stream from the UC Volume.booleangetObject(String catalog, String schema, String volume, String objectPath, String localPath)Downloads an object (file) from the UC Volume to a local path.org.apache.http.entity.InputStreamEntitygetVolumeOperationInputStream()List<String>listObjects(String catalog, String schema, String volume, String prefix, boolean caseSensitive)Lists all objects (files) in the UC Volume that start with a specified prefix.booleanobjectExists(String catalog, String schema, String volume, String objectPath, boolean caseSensitive)Checks if a specific object (file) exists in the UC Volume.booleanprefixExists(String catalog, String schema, String volume, String prefix, boolean caseSensitive)Checks if a specific prefix (folder-like structure) exists in the UC Volume.List<VolumePutResult>putFiles(String catalog, String schema, String volume, List<String> objectPaths, List<InputStream> inputStreams, List<Long> contentLengths, boolean toOverwrite)Uploads multiple files from input streams to specified paths within a UC Volume.List<VolumePutResult>putFiles(String catalog, String schema, String volume, List<String> objectPaths, List<String> localPaths, boolean toOverwrite)Uploads multiple files from local paths to specified paths within a UC Volume.booleanputObject(String catalog, String schema, String volume, String objectPath, InputStream inputStream, long contentLength, boolean toOverwrite)Uploads data from an input stream to a specified path within a UC Volume.booleanputObject(String catalog, String schema, String volume, String objectPath, String localPath, boolean toOverwrite)Uploads data from a local file to a specified path within a UC Volume.voidsetVolumeOperationEntityStream(org.apache.http.HttpEntity httpEntity)booleanvolumeExists(String catalog, String schema, String volumeName, boolean caseSensitive)Checks if a specific volume exists in the given catalog and schema.
-
-
-
Constructor Detail
-
DBFSVolumeClient
public DBFSVolumeClient(com.databricks.sdk.WorkspaceClient workspaceClient)
-
DBFSVolumeClient
public DBFSVolumeClient(IDatabricksConnectionContext connectionContext)
-
-
Method Detail
-
prefixExists
public boolean prefixExists(String catalog, String schema, String volume, String prefix, boolean caseSensitive) throws SQLException
Checks if a specific prefix (folder-like structure) exists in the UC Volume. The prefix must be a part of the file name or path.- Specified by:
prefixExistsin interfaceIDatabricksVolumeClient- Parameters:
catalog- the catalog name in Unity Catalogschema- the schema name in the specified catalogvolume- the volume name in the specified schemaprefix- the prefix to check, including the relative path from the volume rootcaseSensitive- whether the prefix check should be case-sensitive- Returns:
- true if the prefix exists, false otherwise
- Throws:
SQLException- if a database access error occurs or the volume is inaccessible
-
objectExists
public boolean objectExists(String catalog, String schema, String volume, String objectPath, boolean caseSensitive) throws SQLException
Checks if a specific object (file) exists in the UC Volume. The object path must exactly match an existing file.- Specified by:
objectExistsin interfaceIDatabricksVolumeClient- Parameters:
catalog- the catalog name in Unity Catalogschema- the schema name in the specified catalogvolume- the volume name in the specified schemaobjectPath- the path of the object from the volume rootcaseSensitive- whether the path check should be case-sensitive- Returns:
- true if the object exists, false otherwise
- Throws:
SQLException- if a database access error occurs or the volume is inaccessible
-
volumeExists
public boolean volumeExists(String catalog, String schema, String volumeName, boolean caseSensitive) throws SQLException
Checks if a specific volume exists in the given catalog and schema. The volume name must match exactly.- Specified by:
volumeExistsin interfaceIDatabricksVolumeClient- Parameters:
catalog- the catalog name in Unity Catalogschema- the schema name in the specified catalogvolumeName- the name of the volume to checkcaseSensitive- whether the volume name check should be case-sensitive- Returns:
- true if the volume exists, false otherwise
- Throws:
SQLException- if a database access error occurs
-
listObjects
public List<String> listObjects(String catalog, String schema, String volume, String prefix, boolean caseSensitive) throws SQLException
Lists all objects (files) in the UC Volume that start with a specified prefix. The prefix must be a part of the file path from the volume root.- Specified by:
listObjectsin interfaceIDatabricksVolumeClient- Parameters:
catalog- the catalog name in Unity Catalogschema- the schema name in the specified catalogvolume- the volume name in the specified schemaprefix- the prefix to filter objects by, including the relative path from volume rootcaseSensitive- whether the prefix matching should be case-sensitive- Returns:
- a list of object paths that match the specified prefix
- Throws:
SQLException- if a database access error occurs or the volume is inaccessible
-
getObject
public boolean getObject(String catalog, String schema, String volume, String objectPath, String localPath) throws DatabricksVolumeOperationException
Downloads an object (file) from the UC Volume to a local path.- Specified by:
getObjectin interfaceIDatabricksVolumeClient- Parameters:
catalog- the catalog name in Unity Catalogschema- the schema name in the specified catalogvolume- the volume name in the specified schemaobjectPath- the path of the object in the volumelocalPath- the local filesystem path where the object should be saved- Returns:
- true if the download was successful, false otherwise
- Throws:
DatabricksVolumeOperationException
-
getObject
public org.apache.http.entity.InputStreamEntity getObject(String catalog, String schema, String volume, String objectPath) throws DatabricksVolumeOperationException
Retrieves an object as an input stream from the UC Volume. The caller is responsible for closing the returned input stream.- Specified by:
getObjectin interfaceIDatabricksVolumeClient- Parameters:
catalog- the catalog name in Unity Catalogschema- the schema name in the specified catalogvolume- the volume name in the specified schemaobjectPath- the path of the object in the volume- Returns:
- an InputStreamEntity containing the object's data
- Throws:
DatabricksVolumeOperationException
-
putObject
public boolean putObject(String catalog, String schema, String volume, String objectPath, String localPath, boolean toOverwrite) throws DatabricksVolumeOperationException
Uploads data from a local file to a specified path within a UC Volume.- Specified by:
putObjectin interfaceIDatabricksVolumeClient- Parameters:
catalog- the catalog name in Unity Catalogschema- the schema name in the specified catalogvolume- the volume name in the specified schemaobjectPath- the destination path in the volume where the file should be uploadedlocalPath- the local filesystem path of the file to uploadtoOverwrite- whether to overwrite the object if it already exists- Returns:
- true if the upload was successful, false otherwise
- Throws:
DatabricksVolumeOperationException
-
putObject
public boolean putObject(String catalog, String schema, String volume, String objectPath, InputStream inputStream, long contentLength, boolean toOverwrite) throws DatabricksVolumeOperationException
Uploads data from an input stream to a specified path within a UC Volume.- Specified by:
putObjectin interfaceIDatabricksVolumeClient- Parameters:
catalog- the catalog name in Unity Catalogschema- the schema name in the specified catalogvolume- the volume name in the specified schemaobjectPath- the destination path in the volume where the data should be uploadedinputStream- the input stream containing the data to uploadcontentLength- the length of the data in bytestoOverwrite- whether to overwrite the object if it already exists- Returns:
- true if the upload was successful, false otherwise
- Throws:
DatabricksVolumeOperationException
-
deleteObject
public boolean deleteObject(String catalog, String schema, String volume, String objectPath) throws DatabricksVolumeOperationException
Deletes an object from a specified path within a UC Volume.- Specified by:
deleteObjectin interfaceIDatabricksVolumeClient- Parameters:
catalog- the catalog name in Unity Catalogschema- the schema name in the specified catalogvolume- the volume name in the specified schemaobjectPath- the path of the object to delete- Returns:
- true if the deletion was successful, false otherwise
- Throws:
DatabricksVolumeOperationException
-
setVolumeOperationEntityStream
public void setVolumeOperationEntityStream(org.apache.http.HttpEntity httpEntity) throws IOException- Throws:
IOException
-
getVolumeOperationInputStream
public org.apache.http.entity.InputStreamEntity getVolumeOperationInputStream()
-
close
public void close() throws IOException- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
putFiles
public List<VolumePutResult> putFiles(String catalog, String schema, String volume, List<String> objectPaths, List<String> localPaths, boolean toOverwrite)
Uploads multiple files from local paths to specified paths within a UC Volume.- Specified by:
putFilesin interfaceIDatabricksVolumeClient- Parameters:
catalog- the catalog name in Unity Catalogschema- the schema name in the specified catalogvolume- the volume name in the specified schemaobjectPaths- the list of destination paths in the volume where the files should be uploadedlocalPaths- the list of local file paths to uploadtoOverwrite- whether to overwrite the objects if they already exist- Returns:
- a list of results indicating the success or failure of each upload operation
-
putFiles
public List<VolumePutResult> putFiles(String catalog, String schema, String volume, List<String> objectPaths, List<InputStream> inputStreams, List<Long> contentLengths, boolean toOverwrite)
Uploads multiple files from input streams to specified paths within a UC Volume.- Specified by:
putFilesin interfaceIDatabricksVolumeClient- Parameters:
catalog- the catalog name in Unity Catalogschema- the schema name in the specified catalogvolume- the volume name in the specified schemaobjectPaths- the list of destination paths in the volume where the data should be uploadedinputStreams- the list of input streams containing the data to uploadcontentLengths- the list of lengths of the data in bytestoOverwrite- whether to overwrite the objects if they already exist- Returns:
- a list of results indicating the success or failure of each upload operation
-
-