mattcasters opened a new issue, #7567:
URL: https://github.com/apache/hop/issues/7567

   ## Feature request
   
   Add an Apache Commons VFS provider for **Databricks Unity Catalog Volumes** 
(and optionally Workspace files), so Hop can browse, read, write, list, and 
delete volume paths the same way it does for MinIO, Azure, S3, Google Storage, 
etc.
   
   ### Motivation
   
   - Modern Databricks workspaces often have **public DBFS root disabled**. 
Artifact storage for Jobs / native Spark deploy is typically a **UC Volume** 
(`/Volumes/<catalog>/<schema>/<volume>/…`).
   - Hop’s **Databricks Job Run** (Deploy & run) already uploads to Volumes via 
the **Files API** (`PUT /api/2.0/fs/files/…`). That is a special-case client, 
not reusable Hop VFS.
   - A proper VFS scheme would allow:
     - File dialogs / browse volumes from Hop GUI
     - File Input/Output and other VFS-aware transforms/actions against volumes
     - Optional reuse for deploy (source fat jar or target volume URIs)
     - Consistent auth via existing **Databricks Connection** metadata (host + 
PAT)
   
   ### Background: API already exists
   
   Databricks exposes volumes and workspace files through the workspace **Files 
API**:
   
   - Docs: https://docs.databricks.com/api/workspace/files  
   - Volume file guide: https://docs.databricks.com/aws/en/volumes/volume-files 
 
   
   | Operation | Endpoint (typical) |
   |-----------|-------------------|
   | Upload | `PUT /api/2.0/fs/files{path}?overwrite=true` 
(`application/octet-stream`) |
   | Download | `GET /api/2.0/fs/files{path}` (HTTP Range supported) |
   | Create directory | `PUT /api/2.0/fs/directories{path}/` |
   | List directory | `GET /api/2.0/fs/directories{path}` |
   | Delete | `DELETE` on files/directories |
   
   Auth: Bearer PAT (same as Jobs API / Hop Databricks Connection).
   
   **Note:** Legacy DBFS API (`/api/2.0/dbfs/*`) is separate and often blocked 
for public root; VFS should target the **Files API**, not DBFS root.
   
   Hop already implements Volume **upload** in the Databricks tech plugin 
(`RestDatabricksJobsClient` / Files API path encoding) for Deploy & run.
   
   ### Proposed design (high level)
   
   Align with existing Hop VFS plugins (e.g. MinIO named connections):
   
   1. Extract a small **Databricks Files client** (upload / download / list / 
mkdir / delete) shared by Jobs deploy and VFS.
   2. Add VFS under `plugins/tech/databricks` (or sibling module):
      - `@VfsPlugin` + `IVfs`
      - `AbstractOriginatingFileProvider` → FileSystem → FileObject
   3. **Auth:** reuse **Databricks Connection** metadata (host, token, optional 
API base).
   4. **URI scheme (suggested):** connection-named scheme, e.g.
   
      ```text
      databricks-free:///Volumes/apache-hop/default/jars/hop-native.jar
      ```
   
      Path = absolute UC/Workspace path. Alternative: 
`dbxvol://{connection}/Volumes/...`.
   
   5. Capabilities (MVP): READ/WRITE content, LIST, CREATE/DELETE, type/size; 
optional Range GET later.
   6. WireMock unit tests; docs under native Spark / Databricks.
   
   ### Out of scope (MVP)
   
   - Full Databricks Java SDK (pure `HttpClient` is enough, consistent with 
Jobs client)
   - Delta table APIs (tabular data)
   - Replacing cloud object-store VFS (s3a/abfss) that volumes already sit on
   - Spark-side path dialect (`/Volumes/...` on cluster remains separate from 
Hop VFS URIs)
   
   ### Path dialect note
   
   Hop VFS URIs are for **Hop-side** I/O only. Cluster Spark / Jobs still use 
`/Volumes/...` (or cloud URIs). Document this clearly (same class of issue as 
Hop `s3://` vs Spark `s3a://`).
   
   ### Acceptance criteria
   
   - [ ] Named Databricks Connection can be used as a VFS scheme
   - [ ] Browse / list UC Volume directories in Hop file dialogs
   - [ ] Read and write files via VFS (including large jars within Files API 
limits)
   - [ ] Deploy path can optionally share the same Files client (no behaviour 
regression for Job Run)
   - [ ] Unit tests (WireMock) + short user docs
   
   ### Related
   
   - Databricks Job Run Deploy & run (existing Files API upload to Volumes)
   - Metadata: Databricks Connection (Jobs API / PAT)
   - Prior art: MinIO / WebDAV / Azure VFS plugins in Hop
   
   ### Priority / when
   
   Useful after classic-cluster Deploy & run is solid on 
Premium/classic-capable workspaces; not blocking first JAR deploy if Volume 
base path + Files API upload already work.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to