From 2339ad4407a9d2b05d75b12a17985db4cf0682c3 Mon Sep 17 00:00:00 2001 From: mattcasters Date: Sun, 19 Jul 2026 16:40:29 +0200 Subject: [PATCH 1/4] issue #7567 : VFS support for Databricks UC Volumes (Files API) Add a named Databricks VFS connection (scheme = metadata name, auth via Databricks Connection, optional root path) and Commons VFS provider over the workspace Files API for browse/read/write/list/mkdir/rename/delete. Extract RestDatabricksFilesClient for Jobs deploy and VFS; log Move Files exceptions with full stack; document Hop-side vs Spark path dialect. --- .../metadata/api/HopMetadataPropertyType.java | 1 + docs/hop-user-manual/modules/ROOT/nav.adoc | 3 + .../metadata-types/databricks-connection.adoc | 16 + .../databricks-vfs-connection.adoc | 74 ++ .../ROOT/pages/pipeline/spark/databricks.adoc | 6 + .../modules/ROOT/pages/vfs.adoc | 1 + .../ROOT/pages/vfs/databricks-vfs.adoc | 107 +++ .../actions/movefiles/ActionMoveFiles.java | 8 +- .../client/DatabricksFilesClient.java | 67 ++ .../hop/databricks/client/DirectoryEntry.java | 34 + .../client/RestDatabricksFilesClient.java | 664 ++++++++++++++++++ .../client/RestDatabricksJobsClient.java | 261 +------ .../metadata/DatabricksConnection.java | 4 +- .../vfs/databricks/DatabricksFileName.java | 42 ++ .../databricks/DatabricksFileNameParser.java | 53 ++ .../vfs/databricks/DatabricksFileObject.java | 354 ++++++++++ .../databricks/DatabricksFileProvider.java | 130 ++++ .../vfs/databricks/DatabricksFileSystem.java | 81 +++ .../databricks/DatabricksPathResolver.java | 87 +++ .../vfs/databricks/DatabricksVfsPlugin.java | 75 ++ .../metadata/DatabricksVfsConnection.java | 95 +++ .../DatabricksVfsConnectionEditor.java | 191 +++++ .../messages/messages_en_US.properties | 33 + .../client/RestDatabricksFilesClientTest.java | 246 +++++++ .../databricks/DatabricksFileObjectTest.java | 256 +++++++ .../DatabricksPathResolverTest.java | 70 ++ .../databricks/DatabricksVfsPluginTest.java | 63 ++ 27 files changed, 2783 insertions(+), 239 deletions(-) create mode 100644 docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-vfs-connection.adoc create mode 100644 docs/hop-user-manual/modules/ROOT/pages/vfs/databricks-vfs.adoc create mode 100644 plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/DatabricksFilesClient.java create mode 100644 plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/DirectoryEntry.java create mode 100644 plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksFilesClient.java create mode 100644 plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileName.java create mode 100644 plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileNameParser.java create mode 100644 plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileObject.java create mode 100644 plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileProvider.java create mode 100644 plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileSystem.java create mode 100644 plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksPathResolver.java create mode 100644 plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksVfsPlugin.java create mode 100644 plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/metadata/DatabricksVfsConnection.java create mode 100644 plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/metadata/DatabricksVfsConnectionEditor.java create mode 100644 plugins/tech/databricks/src/main/resources/org/apache/hop/vfs/databricks/metadata/messages/messages_en_US.properties create mode 100644 plugins/tech/databricks/src/test/java/org/apache/hop/databricks/client/RestDatabricksFilesClientTest.java create mode 100644 plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksFileObjectTest.java create mode 100644 plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksPathResolverTest.java create mode 100644 plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksVfsPluginTest.java diff --git a/core/src/main/java/org/apache/hop/metadata/api/HopMetadataPropertyType.java b/core/src/main/java/org/apache/hop/metadata/api/HopMetadataPropertyType.java index bc72cd8cd57..e9936a0e6cc 100644 --- a/core/src/main/java/org/apache/hop/metadata/api/HopMetadataPropertyType.java +++ b/core/src/main/java/org/apache/hop/metadata/api/HopMetadataPropertyType.java @@ -101,6 +101,7 @@ public enum HopMetadataPropertyType { VFS_MINIO_CONNECTION, VFS_S3_CONNECTION, VFS_WEBDAV_CONNECTION, + VFS_DATABRICKS_CONNECTION, // DATA STREAM DATA_STREAM, diff --git a/docs/hop-user-manual/modules/ROOT/nav.adoc b/docs/hop-user-manual/modules/ROOT/nav.adoc index 63fca1915d4..86fb13bc8e9 100644 --- a/docs/hop-user-manual/modules/ROOT/nav.adoc +++ b/docs/hop-user-manual/modules/ROOT/nav.adoc @@ -396,6 +396,7 @@ under the License. * xref:vfs.adoc[Virtual File System] ** xref:vfs/aws-s3-vfs.adoc[Amazon Web Services S3] ** xref:vfs/azure-blob-storage-vfs.adoc[Microsoft Azure Storage] +** xref:vfs/databricks-vfs.adoc[Databricks Volumes / Workspace] ** xref:vfs/dropbox-vfs.adoc[Dropbox] ** xref:vfs/google-cloud-storage-vfs.adoc[Google Cloud Storage] ** xref:vfs/google-drive-vfs.adoc[Google Drive] @@ -455,6 +456,8 @@ under the License. ** xref:metadata-types/azure-authentication.adoc[Azure Connection] ** xref:metadata-types/beam-file-definition.adoc[Beam File Definition] ** xref:metadata-types/cassandra/cassandra-connection.adoc[Cassandra Connection] +** xref:metadata-types/databricks-connection.adoc[Databricks Connection] +** xref:metadata-types/databricks-vfs-connection.adoc[Databricks VFS Connection] ** xref:metadata-types/data-set.adoc[Data Set] ** xref:metadata-types/execution-data-profile.adoc[] ** xref:metadata-types/execution-information-location.adoc[] diff --git a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-connection.adoc b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-connection.adoc index ba8aee6cce6..99b9b5bf4b8 100644 --- a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-connection.adoc +++ b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-connection.adoc @@ -53,8 +53,24 @@ Use this metadata type when orchestrating jobs from Hop (for example the upcomin Use **Test connection** in the editor to call the workspace identity endpoint (SCIM *Me*) or fall back to listing jobs. A successful test shows the resolved user name or host. +== VFS + +For Hop file dialogs and VFS-aware transforms, create a separate +xref:metadata-types/databricks-vfs-connection.adoc[Databricks VFS Connection] under **File storage**. +That object’s **name** is the URI scheme; it **references this connection** for host and PAT. + +Example: Jobs connection `prod-workspace`, VFS connection name `dbx-jars`: + +---- +dbx-jars:///Volumes/apache-hop/default/jars/data.csv +---- + +See xref:vfs/databricks-vfs.adoc[Databricks Volumes / Workspace VFS]. + == Related +* xref:metadata-types/databricks-vfs-connection.adoc[Databricks VFS Connection] — named scheme for Volumes / Workspace +* xref:vfs/databricks-vfs.adoc[Databricks Volumes / Workspace VFS] * xref:pipeline/spark/databricks.adoc[Native Spark on Databricks] — Deploy & run, classic clusters, Volumes * xref:workflow/actions/databricks-job-run.adoc[Databricks Job Run] — trigger and wait for Jobs API runs * xref:database/databases/databricks.adoc[Databricks database (JDBC)] — SQL warehouse access diff --git a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-vfs-connection.adoc b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-vfs-connection.adoc new file mode 100644 index 00000000000..283c6e40b93 --- /dev/null +++ b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-vfs-connection.adoc @@ -0,0 +1,74 @@ +//// +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +//// +:imagesdir: ../../assets/images/ +:page-pagination: +:description: Named Databricks VFS connection for Unity Catalog Volumes and Workspace files (Files API) + += Databricks VFS Connection + +== Description + +*Databricks VFS Connection* registers a **named VFS scheme** for Unity Catalog Volumes and Workspace files via the Databricks **Files API**. + +* The metadata **Name** is the URI scheme (like xref:metadata-types/minio-connection.adoc[MinIO Connection]). +* **Authentication** is not stored on this object. Select an existing xref:metadata-types/databricks-connection.adoc[Databricks Connection] (workspace host + PAT). + +Example: VFS name `db-volume`, root path `/Volumes/apache-hop/default/testing`, Databricks Connection `prod-workspace`: + +---- +db-volume:///input/customers-1M.txt +---- + +resolves to workspace path `/Volumes/apache-hop/default/testing/input/customers-1M.txt`. + +This is **Hop-side I/O** only (GUI, local engine, classic file transforms). +**Native Spark** Dataset I/O does **not** use Hop VFS schemes — use absolute `/Volumes/…` or cloud URIs (`s3a://…`, …) on the cluster. +Do not use this connection as the primary bulk path for large Spark datasets (workspace Files API is not a high-throughput object-store client). +See xref:vfs/databricks-vfs.adoc[Databricks Volumes / Workspace VFS] and +xref:pipeline/spark/paths-and-filesystems.adoc[Paths and file systems on native Spark]. + +== Options + +[options="header",cols="1,3"] +|=== +|Option |Description + +|Name (URI scheme) +|VFS scheme used in paths: `{name}:///…`. Prefer short names; do not reuse built-in schemes (`file`, `s3`, …). + +|Description +|Optional free-text description. + +|Databricks Connection +|Existing Jobs/workspace connection that supplies host and personal access token. + +|Root path +|Absolute UC Volume or Workspace path that is the **root of this scheme**. Shortens URIs: `{name}:///input` → `{root}/input`. Leave empty if every URI must include full `/Volumes/…` or `/Workspace/…` paths. +|=== + +== Tips + +* Create the **Databricks Connection** first and use **Test connection** there (or on this editor, which validates the referenced connection). +* Set **Root path** to your testing volume (for example `/Volumes/apache-hop/default/testing`) so workflow paths stay short. +* In File → Open, type `{name}:///` to list the root path contents (when root is set). +* One Jobs connection can back several VFS schemes (different root volumes). + +== Related + +* xref:vfs/databricks-vfs.adoc[Databricks Volumes / Workspace VFS] +* xref:metadata-types/databricks-connection.adoc[Databricks Connection] +* xref:pipeline/spark/databricks.adoc[Native Spark on Databricks] diff --git a/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/databricks.adoc b/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/databricks.adoc index c62ef8dabce..c2de6859485 100644 --- a/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/databricks.adoc +++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/databricks.adoc @@ -176,6 +176,12 @@ If logs still show `POST /api/2.0/dbfs/create` for a `/Volumes/…` path, the ru Job library and MainSpark parameter paths for volumes stay as absolute `/Volumes/…` (no `dbfs:` scheme). +=== Hop VFS for Volumes + +From Hop GUI and local transforms you can use a xref:metadata-types/databricks-vfs-connection.adoc[Databricks VFS Connection] (scheme = metadata name, auth via referenced Databricks Connection) to browse, read, and write the same Files API paths (for example `dbx-jars:///Volumes/apache-hop/default/jars/…`). +That is **Hop-side I/O only** — it does not replace absolute `/Volumes/…` paths on the cluster or in Jobs API library URIs. +See xref:vfs/databricks-vfs.adoc[Databricks Volumes / Workspace VFS]. + == Compute modes (Deploy & run) The **Cluster / compute** field accepts one of: diff --git a/docs/hop-user-manual/modules/ROOT/pages/vfs.adoc b/docs/hop-user-manual/modules/ROOT/pages/vfs.adoc index 52031222662..f722d7d10f9 100644 --- a/docs/hop-user-manual/modules/ROOT/pages/vfs.adoc +++ b/docs/hop-user-manual/modules/ROOT/pages/vfs.adoc @@ -46,6 +46,7 @@ Click the File system name to access more detailed file system documentation. |File System|Description|URI Format |xref:vfs/aws-s3-vfs.adoc[AWS S3]|Provides access to Amazon S3 Buckets|`s3://` |xref:vfs/azure-blob-storage-vfs.adoc[Azure Blob Storage]|Provides access to Azure Blob Storage|`azure://` (alias: `azfs://`) +|xref:vfs/databricks-vfs.adoc[Databricks Volumes / Workspace]|UC Volumes and Workspace files via Files API; scheme from xref:metadata-types/databricks-vfs-connection.adoc[Databricks VFS Connection]|`+:///Volumes/…+` or `+…/Workspace/…+` |xref:vfs/dropbox-vfs.adoc[Dropbox]|Provides access to Dropbox|`dropbox://` |xref:vfs/google-cloud-storage-vfs.adoc[Google Cloud Storage]|Provides access to Google Cloud Storage buckets|`gs://` |xref:vfs/google-drive-vfs.adoc[Google Drive]|Provides access to Google Drive folders|`googledrive://` diff --git a/docs/hop-user-manual/modules/ROOT/pages/vfs/databricks-vfs.adoc b/docs/hop-user-manual/modules/ROOT/pages/vfs/databricks-vfs.adoc new file mode 100644 index 00000000000..b884c241e56 --- /dev/null +++ b/docs/hop-user-manual/modules/ROOT/pages/vfs/databricks-vfs.adoc @@ -0,0 +1,107 @@ +//// +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +//// + +:documentationPath: /vfs/ +:language: en_US +:description: Hop VFS for Databricks Unity Catalog Volumes and Workspace files via the Files API + += Databricks Volumes / Workspace VFS + +== Scheme + +Each xref:metadata-types/databricks-vfs-connection.adoc[Databricks VFS Connection] registers as its own VFS scheme. +The **metadata name** is the scheme (same idea as MinIO). + +With a **Root path** set to a volume (recommended for most projects): + +---- +{vfs-connection-name}:///relative/path/under/root +---- + +Example: name `db-volume`, root `/Volumes/apache-hop/default/testing`: + +---- +db-volume:///input/customers-1M.txt +---- + +→ workspace `/Volumes/apache-hop/default/testing/input/customers-1M.txt`. + +Without a root path, URIs must be absolute workspace paths: + +---- +{vfs-connection-name}:///Volumes////path/to/file +{vfs-connection-name}:///Workspace/Users/you@example.com/path/to/file +---- + +Authentication comes from the **Databricks Connection** selected on that VFS metadata (host + PAT). + +Pick a VFS **Name** that does not clash with +https://commons.apache.org/proper/commons-vfs/filesystems.html[built-in VFS schemes] +(`file`, `ftp`, `http`, …) or other plugins (`s3`, `azure`, `gs`, …). + +== What it supports + +Hop talks to the workspace **Files API** (Bearer PAT from the referenced connection): + +* List, create, and delete directories under UC Volumes and Workspace +* Read and write file content (including large jars within Databricks Files API limits, ~5 GiB per PUT) +* Browse from Hop file dialogs and use VFS-aware transforms/actions + +Classic **DBFS** paths (`dbfs:/FileStore/…`) are **not** exposed through this VFS provider. +Prefer `/Volumes/…` on modern workspaces where public DBFS root is disabled. +Deploy & run still supports classic DBFS as a fallback upload API when you use absolute `dbfs:` paths there. + +== Path dialect (Hop vs cluster) + +[IMPORTANT] +==== +**Native Spark does not use Hop VFS** for Dataset I/O (*Spark File Input/Output*, Lake Table PATH). +Those transforms need **Spark/Hadoop URIs** on the cluster (`/Volumes/…`, `s3a://…`, `abfs://…`, …), not named schemes such as `db-volume:///…`. +The same rule as the general xref:vfs.adoc[Virtual File Systems] overview and +xref:pipeline/spark/paths-and-filesystems.adoc[Paths and file systems on native Spark]. + +Hop Databricks VFS URIs are for **Hop-side** I/O only: + +* Hop GUI file dialogs, local engine, classic file transforms/actions +* Convenience copies (configs, samples, modest artifacts) via the workspace **Files API** + +Do **not** use this VFS as the primary path for **large Spark data landings**. +The Files API is a single-stream workspace HTTP upload — fine for small/medium files, not a bulk object-store client. +For multi‑hundred‑MB or multi‑GB datasets, land data with cloud storage tools or cluster-side paths, then point Spark File / Lake transforms at **Spark-visible** URIs. + +Jobs API library and MainSpark parameter paths stay absolute `/Volumes/…` (no Hop VFS scheme). +See xref:pipeline/spark/databricks.adoc[Native Spark on Databricks]. +==== + +== Configuration + +. Create a xref:metadata-types/databricks-connection.adoc[Databricks Connection] (workspace host + PAT). Prefer variables for secrets. +. Create a xref:metadata-types/databricks-vfs-connection.adoc[Databricks VFS Connection]: + ** **Name** = URI scheme (for example `db-volume`) + ** **Databricks Connection** = the Jobs connection from step 1 + ** **Root path** = `/Volumes/catalog/schema/volume` (or a folder under a volume) +. In Hop file dialogs or transforms, enter `{name}:///subdir/…` relative to that root. + +If root path is left empty, every URI must include the full `/Volumes/…` or `/Workspace/…` path. + +== Related + +* xref:metadata-types/databricks-vfs-connection.adoc[Databricks VFS Connection] +* xref:metadata-types/databricks-connection.adoc[Databricks Connection] +* xref:pipeline/spark/databricks.adoc[Native Spark on Databricks] — artifact storage, Files API vs DBFS +* xref:workflow/actions/databricks-job-run.adoc[Databricks Job Run] +* xref:vfs.adoc[Virtual File Systems overview] diff --git a/plugins/actions/movefiles/src/main/java/org/apache/hop/workflow/actions/movefiles/ActionMoveFiles.java b/plugins/actions/movefiles/src/main/java/org/apache/hop/workflow/actions/movefiles/ActionMoveFiles.java index 82c6d54e451..d2701a495ce 100644 --- a/plugins/actions/movefiles/src/main/java/org/apache/hop/workflow/actions/movefiles/ActionMoveFiles.java +++ b/plugins/actions/movefiles/src/main/java/org/apache/hop/workflow/actions/movefiles/ActionMoveFiles.java @@ -656,7 +656,8 @@ public boolean includeFile(FileSelectInfo info) { "ActionMoveFiles.Error.Exception.MoveProcess", realSourceFilefoldername, destinationFileFolder == null ? "" : destinationFileFolder.toString(), - e.getMessage())); + e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName()), + e); } finally { if (sourceFileFolder != null) { try { @@ -939,13 +940,16 @@ private boolean moveFile( } } } catch (Exception e) { + // Pass Throwable so Hop logs the full stack (including VFS root cause), not only + // e.getMessage(). logError( BaseMessages.getString( PKG, "ActionMoveFiles.Error.Exception.MoveProcessError", sourceFileFolder.toString(), destinationFilename.toString(), - e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName())); + e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName()), + e); updateErrors(); } finally { if (destinationFile != null) { diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/DatabricksFilesClient.java b/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/DatabricksFilesClient.java new file mode 100644 index 00000000000..1b3027d4fc3 --- /dev/null +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/DatabricksFilesClient.java @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.databricks.client; + +import java.io.InputStream; +import java.nio.file.Path; +import java.util.List; +import java.util.Optional; +import org.apache.hop.core.exception.HopException; + +/** + * Databricks workspace Files API surface for UC Volumes and Workspace files ({@code /Volumes/…}, + * {@code /Workspace/…}). Not the legacy DBFS block API. + */ +public interface DatabricksFilesClient extends AutoCloseable { + + /** Upload a local file (overwrite). Path must be absolute Files API path. */ + void upload(Path localFile, String workspacePath) throws HopException; + + /** Upload UTF-8 text (overwrite). Convenience for small sidecars. */ + void uploadText(String workspacePath, String text) throws HopException; + + /** + * Metadata for a remote file. {@link WorkspaceFileMetadata#exists()} is false when missing or not + * a file. + */ + WorkspaceFileMetadata getFileMetadata(String workspacePath) throws HopException; + + /** Download a small remote text file; empty when missing. */ + Optional downloadTextIfExists(String workspacePath) throws HopException; + + /** + * Open a binary download stream for the file. Caller must close the stream. Throws if the path + * does not exist. + */ + InputStream openInputStream(String workspacePath) throws HopException; + + /** List directory contents (all pages). Path must be an existing directory. */ + List listDirectory(String workspacePath) throws HopException; + + /** Create a directory (parents must exist per API rules for the volume). */ + void createDirectory(String workspacePath) throws HopException; + + /** Delete a file. */ + void deleteFile(String workspacePath) throws HopException; + + /** Delete a directory; when {@code recursive}, delete contents first as required by the API. */ + void deleteDirectory(String workspacePath, boolean recursive) throws HopException; + + @Override + void close(); +} diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/DirectoryEntry.java b/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/DirectoryEntry.java new file mode 100644 index 00000000000..926f793ff20 --- /dev/null +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/DirectoryEntry.java @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.databricks.client; + +/** + * One entry from a Databricks Files API directory listing ({@code GET + * /api/2.0/fs/directories{path}}). + */ +public record DirectoryEntry( + String name, String path, boolean directory, long sizeBytes, long lastModifiedEpochMs) { + + public static DirectoryEntry ofFile(String name, String path, long sizeBytes, long lastModified) { + return new DirectoryEntry(name, path, false, Math.max(0L, sizeBytes), lastModified); + } + + public static DirectoryEntry ofDirectory(String name, String path, long lastModified) { + return new DirectoryEntry(name, path, true, -1L, lastModified); + } +} diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksFilesClient.java b/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksFilesClient.java new file mode 100644 index 00000000000..8662c854d18 --- /dev/null +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksFilesClient.java @@ -0,0 +1,664 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.databricks.client; + +import java.io.InputStream; +import java.net.URI; +import java.net.URLEncoder; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import org.apache.commons.lang3.StringUtils; +import org.apache.hop.core.encryption.Encr; +import org.apache.hop.core.exception.HopException; +import org.apache.hop.core.variables.IVariables; +import org.apache.hop.databricks.metadata.DatabricksConnection; +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; + +/** + * Files API client for UC Volumes and Workspace paths ({@code PUT/GET/DELETE /api/2.0/fs/files…}, + * {@code /api/2.0/fs/directories…}). Bearer PAT auth; does not log tokens. + */ +public final class RestDatabricksFilesClient implements DatabricksFilesClient { + + private static final Duration TIMEOUT = Duration.ofSeconds(60); + private static final Duration UPLOAD_TIMEOUT = Duration.ofMinutes(30); + private static final String FILES_PREFIX = "/api/2.0/fs/files"; + private static final String DIRS_PREFIX = "/api/2.0/fs/directories"; + + private final String hostBase; + private final String token; + private final HttpClient httpClient; + private final JSONParser parser = new JSONParser(); + + public RestDatabricksFilesClient(String hostBase, String token, HttpClient httpClient) { + this.hostBase = normalizeHost(hostBase); + this.token = Objects.requireNonNull(token, "token"); + this.httpClient = Objects.requireNonNull(httpClient, "httpClient"); + } + + public static RestDatabricksFilesClient create( + DatabricksConnection connection, IVariables variables) throws HopException { + if (connection == null) { + throw new HopException("Databricks connection is required"); + } + String host = resolve(variables, connection.getHost()); + String token = + Encr.decryptPasswordOptionallyEncrypted(resolve(variables, connection.getToken())); + if (StringUtils.isBlank(host)) { + throw new HopException("Databricks workspace host is required"); + } + if (StringUtils.isBlank(token)) { + throw new HopException("Databricks personal access token is required"); + } + HttpClient client = HttpClient.newBuilder().connectTimeout(TIMEOUT).build(); + return new RestDatabricksFilesClient(host, token, client); + } + + /** Visible for tests with a custom {@link HttpClient}. */ + public static RestDatabricksFilesClient createForTest( + String hostBase, String token, HttpClient httpClient) { + return new RestDatabricksFilesClient(hostBase, token, httpClient); + } + + @Override + public void upload(Path localFile, String workspacePath) throws HopException { + if (localFile == null || !Files.isRegularFile(localFile)) { + throw new HopException("Local file for workspace upload does not exist: " + localFile); + } + String path = requireFilesApiPath(workspacePath); + try { + String encodedPath = encodeFilesApiPath(path); + String url = hostBase + FILES_PREFIX + encodedPath + "?overwrite=true"; + HttpRequest request = + HttpRequest.newBuilder() + .uri(URI.create(url)) + .timeout(UPLOAD_TIMEOUT) + .header("Authorization", "Bearer " + token) + .header("Content-Type", "application/octet-stream") + .PUT(HttpRequest.BodyPublishers.ofFile(localFile)) + .build(); + HttpResponse response = + httpClient.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); + int code = response.statusCode(); + String body = response.body() == null ? "" : response.body(); + if (code < 200 || code >= 300) { + throw new HopException( + "Databricks API HTTP " + + code + + " for PUT " + + FILES_PREFIX + + path + + ": " + + sanitizeError(body)); + } + } catch (HopException e) { + throw e; + } catch (Exception e) { + throw new HopException("Failed to upload " + localFile + " to " + path + " via Files API", e); + } + } + + @Override + public void uploadText(String workspacePath, String text) throws HopException { + if (text == null) { + text = ""; + } + try { + Path tmp = Files.createTempFile("hop-dbx-text-", ".txt"); + try { + Files.writeString(tmp, text, StandardCharsets.UTF_8); + upload(tmp, workspacePath); + } finally { + Files.deleteIfExists(tmp); + } + } catch (HopException e) { + throw e; + } catch (Exception e) { + throw new HopException("Failed to upload text to " + workspacePath, e); + } + } + + @Override + public WorkspaceFileMetadata getFileMetadata(String workspacePath) throws HopException { + String path = requireFilesApiPath(workspacePath); + try { + String encodedPath = encodeFilesApiPath(path); + String url = hostBase + FILES_PREFIX + encodedPath; + HttpRequest request = + HttpRequest.newBuilder() + .uri(URI.create(url)) + .timeout(TIMEOUT) + .header("Authorization", "Bearer " + token) + .method("HEAD", HttpRequest.BodyPublishers.noBody()) + .build(); + HttpResponse response = + httpClient.send(request, HttpResponse.BodyHandlers.discarding()); + int code = response.statusCode(); + if (code == 404) { + return WorkspaceFileMetadata.missing(); + } + if (code < 200 || code >= 300) { + return getFileMetadataViaGetRange(path); + } + long size = contentLength(response.headers().firstValue("Content-Length").orElse(null)); + if (size < 0) { + size = contentLength(response.headers().firstValue("content-length").orElse(null)); + } + if (size < 0) { + return getFileMetadataViaGetRange(path); + } + return WorkspaceFileMetadata.ofFile(size); + } catch (HopException e) { + throw e; + } catch (Exception e) { + throw new HopException("Failed to get metadata for " + path, e); + } + } + + private WorkspaceFileMetadata getFileMetadataViaGetRange(String absolutePath) + throws HopException { + try { + String encodedPath = encodeFilesApiPath(absolutePath); + String url = hostBase + FILES_PREFIX + encodedPath; + HttpRequest request = + HttpRequest.newBuilder() + .uri(URI.create(url)) + .timeout(TIMEOUT) + .header("Authorization", "Bearer " + token) + .header("Range", "bytes=0-0") + .GET() + .build(); + HttpResponse response = + httpClient.send(request, HttpResponse.BodyHandlers.ofByteArray()); + int code = response.statusCode(); + if (code == 404) { + return WorkspaceFileMetadata.missing(); + } + if (code != 200 && code != 206) { + String errBody = + response.body() == null ? "" : new String(response.body(), StandardCharsets.UTF_8); + throw new HopException( + "Databricks API HTTP " + + code + + " for GET " + + FILES_PREFIX + + absolutePath + + ": " + + sanitizeError(errBody)); + } + Optional contentRange = response.headers().firstValue("Content-Range"); + if (contentRange.isPresent()) { + String cr = contentRange.get(); + int slash = cr.lastIndexOf('/'); + if (slash > 0 && slash < cr.length() - 1) { + try { + return WorkspaceFileMetadata.ofFile(Long.parseLong(cr.substring(slash + 1).trim())); + } catch (NumberFormatException ignored) { + // fall through + } + } + } + long size = contentLength(response.headers().firstValue("Content-Length").orElse(null)); + if (size >= 0 && code == 200) { + return WorkspaceFileMetadata.ofFile(size); + } + return WorkspaceFileMetadata.missing(); + } catch (HopException e) { + throw e; + } catch (Exception e) { + throw new HopException("Failed to get metadata for " + absolutePath, e); + } + } + + @Override + public Optional downloadTextIfExists(String workspacePath) throws HopException { + String path = requireFilesApiPath(workspacePath); + try { + String encodedPath = encodeFilesApiPath(path); + String url = hostBase + FILES_PREFIX + encodedPath; + HttpRequest request = + HttpRequest.newBuilder() + .uri(URI.create(url)) + .timeout(TIMEOUT) + .header("Authorization", "Bearer " + token) + .GET() + .build(); + HttpResponse response = + httpClient.send(request, HttpResponse.BodyHandlers.ofByteArray()); + int code = response.statusCode(); + if (code == 404) { + return Optional.empty(); + } + if (code < 200 || code >= 300) { + String errBody = + response.body() == null ? "" : new String(response.body(), StandardCharsets.UTF_8); + throw new HopException( + "Databricks API HTTP " + + code + + " for GET " + + FILES_PREFIX + + path + + ": " + + sanitizeError(errBody)); + } + byte[] bytes = response.body() == null ? new byte[0] : response.body(); + return Optional.of(new String(bytes, StandardCharsets.UTF_8)); + } catch (HopException e) { + throw e; + } catch (Exception e) { + throw new HopException("Failed to download " + path, e); + } + } + + @Override + public InputStream openInputStream(String workspacePath) throws HopException { + String path = requireFilesApiPath(workspacePath); + try { + String encodedPath = encodeFilesApiPath(path); + String url = hostBase + FILES_PREFIX + encodedPath; + HttpRequest request = + HttpRequest.newBuilder() + .uri(URI.create(url)) + .timeout(UPLOAD_TIMEOUT) + .header("Authorization", "Bearer " + token) + .GET() + .build(); + HttpResponse response = + httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream()); + int code = response.statusCode(); + if (code == 404) { + response.body().close(); + throw new HopException("File not found: " + path); + } + if (code < 200 || code >= 300) { + String errBody; + try (InputStream err = response.body()) { + errBody = new String(err.readAllBytes(), StandardCharsets.UTF_8); + } + throw new HopException( + "Databricks API HTTP " + + code + + " for GET " + + FILES_PREFIX + + path + + ": " + + sanitizeError(errBody)); + } + return response.body(); + } catch (HopException e) { + throw e; + } catch (Exception e) { + throw new HopException("Failed to open stream for " + path, e); + } + } + + @Override + public List listDirectory(String workspacePath) throws HopException { + String path = requireFilesApiPath(workspacePath); + List all = new ArrayList<>(); + String pageToken = null; + try { + do { + String encodedPath = encodeFilesApiPath(path); + StringBuilder url = new StringBuilder(hostBase).append(DIRS_PREFIX).append(encodedPath); + if (pageToken != null) { + url.append("?page_token=").append(URLEncoder.encode(pageToken, StandardCharsets.UTF_8)); + } + HttpRequest request = + HttpRequest.newBuilder() + .uri(URI.create(url.toString())) + .timeout(TIMEOUT) + .header("Authorization", "Bearer " + token) + .GET() + .build(); + HttpResponse response = + httpClient.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); + int code = response.statusCode(); + String body = response.body() == null ? "" : response.body(); + if (code < 200 || code >= 300) { + throw new HopException( + "Databricks API HTTP " + + code + + " for GET " + + DIRS_PREFIX + + path + + ": " + + sanitizeError(body)); + } + JSONObject json = parseObject(body); + JSONArray contents = (JSONArray) json.get("contents"); + if (contents != null) { + for (Object item : contents) { + if (item instanceof JSONObject entry) { + all.add(parseDirectoryEntry(entry, path)); + } + } + } + Object next = json.get("next_page_token"); + pageToken = + next != null && StringUtils.isNotBlank(next.toString()) ? next.toString() : null; + } while (pageToken != null); + return all; + } catch (HopException e) { + throw e; + } catch (Exception e) { + throw new HopException("Failed to list directory " + path, e); + } + } + + private static DirectoryEntry parseDirectoryEntry(JSONObject entry, String parentPath) { + String name = entry.get("name") != null ? entry.get("name").toString() : ""; + String entryPath = + entry.get("path") != null + ? entry.get("path").toString() + : (parentPath.endsWith("/") ? parentPath + name : parentPath + "/" + name); + boolean isDir = Boolean.TRUE.equals(entry.get("is_directory")); + long size = 0L; + if (entry.get("file_size") instanceof Number n) { + size = n.longValue(); + } else if (entry.get("file_size") != null) { + try { + size = Long.parseLong(entry.get("file_size").toString()); + } catch (NumberFormatException ignored) { + size = 0L; + } + } + long lastMod = 0L; + if (entry.get("last_modified") instanceof Number n) { + lastMod = n.longValue(); + } else if (entry.get("last_modified") != null) { + try { + lastMod = Long.parseLong(entry.get("last_modified").toString()); + } catch (NumberFormatException ignored) { + lastMod = 0L; + } + } + if (StringUtils.isBlank(name) && StringUtils.isNotBlank(entryPath)) { + int slash = entryPath.lastIndexOf('/'); + name = slash >= 0 ? entryPath.substring(slash + 1) : entryPath; + } + return isDir + ? DirectoryEntry.ofDirectory(name, entryPath, lastMod) + : DirectoryEntry.ofFile(name, entryPath, size, lastMod); + } + + @Override + public void createDirectory(String workspacePath) throws HopException { + String path = requireFilesApiPath(workspacePath); + try { + String encodedPath = encodeFilesApiPath(path); + // Trailing slash required by Files API for directories + if (!encodedPath.endsWith("/")) { + encodedPath = encodedPath + "/"; + } + String url = hostBase + DIRS_PREFIX + encodedPath; + HttpRequest request = + HttpRequest.newBuilder() + .uri(URI.create(url)) + .timeout(TIMEOUT) + .header("Authorization", "Bearer " + token) + .PUT(HttpRequest.BodyPublishers.noBody()) + .build(); + HttpResponse response = + httpClient.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); + int code = response.statusCode(); + String body = response.body() == null ? "" : response.body(); + // 200/201/204 success; some workspaces return 409 if already exists — treat as success + if (code == 409) { + return; + } + if (code < 200 || code >= 300) { + throw new HopException( + "Databricks API HTTP " + + code + + " for PUT " + + DIRS_PREFIX + + path + + ": " + + sanitizeError(body)); + } + } catch (HopException e) { + throw e; + } catch (Exception e) { + throw new HopException("Failed to create directory " + path, e); + } + } + + @Override + public void deleteFile(String workspacePath) throws HopException { + String path = requireFilesApiPath(workspacePath); + try { + String encodedPath = encodeFilesApiPath(path); + String url = hostBase + FILES_PREFIX + encodedPath; + HttpRequest request = + HttpRequest.newBuilder() + .uri(URI.create(url)) + .timeout(TIMEOUT) + .header("Authorization", "Bearer " + token) + .DELETE() + .build(); + HttpResponse response = + httpClient.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); + int code = response.statusCode(); + String body = response.body() == null ? "" : response.body(); + if (code == 404) { + return; + } + if (code < 200 || code >= 300) { + throw new HopException( + "Databricks API HTTP " + + code + + " for DELETE " + + FILES_PREFIX + + path + + ": " + + sanitizeError(body)); + } + } catch (HopException e) { + throw e; + } catch (Exception e) { + throw new HopException("Failed to delete file " + path, e); + } + } + + @Override + public void deleteDirectory(String workspacePath, boolean recursive) throws HopException { + String path = requireFilesApiPath(workspacePath); + // Workspace Files API rejects ?recursive=… (FILES_API_UNEXPECTED_QUERY_PARAMETERS). + // Recursive delete: remove children first, then the empty directory. + if (recursive) { + List children = listDirectory(path); + for (DirectoryEntry child : children) { + if (child.directory()) { + deleteDirectory(child.path(), true); + } else { + deleteFile(child.path()); + } + } + } + deleteDirectoryEmpty(path); + } + + /** DELETE {@code /api/2.0/fs/directories{path}/} with no query parameters (empty dir only). */ + private void deleteDirectoryEmpty(String path) throws HopException { + try { + String encodedPath = encodeFilesApiPath(path); + if (!encodedPath.endsWith("/")) { + encodedPath = encodedPath + "/"; + } + String url = hostBase + DIRS_PREFIX + encodedPath; + HttpRequest request = + HttpRequest.newBuilder() + .uri(URI.create(url)) + .timeout(TIMEOUT) + .header("Authorization", "Bearer " + token) + .DELETE() + .build(); + HttpResponse response = + httpClient.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); + int code = response.statusCode(); + String body = response.body() == null ? "" : response.body(); + if (code == 404) { + return; + } + if (code < 200 || code >= 300) { + throw new HopException( + "Databricks API HTTP " + + code + + " for DELETE " + + DIRS_PREFIX + + path + + ": " + + sanitizeError(body)); + } + } catch (HopException e) { + throw e; + } catch (Exception e) { + throw new HopException("Failed to delete directory " + path, e); + } + } + + @Override + public void close() { + // HttpClient does not require close + } + + /** + * UC Volumes and Workspace files must use the Files API. Classic DBFS roots use the legacy DBFS + * block API (not this client). + */ + public static boolean isFilesApiPath(String absolutePath) { + if (StringUtils.isBlank(absolutePath)) { + return false; + } + String p = absolutePath.trim(); + return p.startsWith("/Volumes/") + || p.equals("/Volumes") + || p.startsWith("/Workspace/") + || p.equals("/Workspace"); + } + + /** + * Normalize workspace paths: strip optional {@code dbfs:} scheme, ensure a leading slash. {@code + * dbfs:/Volumes/…} becomes {@code /Volumes/…}. + */ + public static String normalizeWorkspacePath(String workspacePath) throws HopException { + if (StringUtils.isBlank(workspacePath)) { + throw new HopException("Upload path is required"); + } + String p = workspacePath.trim(); + if (p.startsWith("dbfs:")) { + p = p.substring("dbfs:".length()); + } + if (!p.startsWith("/")) { + p = "/" + p; + } + return p; + } + + static String requireFilesApiPath(String workspacePath) throws HopException { + String path = normalizeWorkspacePath(workspacePath); + if (!isFilesApiPath(path)) { + throw new HopException( + "Path is not a Databricks Files API location (expected /Volumes/… or /Workspace/…): " + + path + + ". Classic DBFS paths are not supported by this client."); + } + return path; + } + + /** + * Encode an absolute workspace path for the Files API URL path (keep {@code /} separators, encode + * each segment). + */ + public static String encodeFilesApiPath(String absolutePath) { + String p = absolutePath.startsWith("/") ? absolutePath : "/" + absolutePath; + String[] parts = p.split("/", -1); + StringBuilder sb = new StringBuilder(); + for (String part : parts) { + if (part.isEmpty()) { + continue; + } + sb.append('/').append(URLEncoder.encode(part, StandardCharsets.UTF_8).replace("+", "%20")); + } + return sb.length() == 0 ? "/" : sb.toString(); + } + + /** Strip likely secrets from error payloads before logging. */ + public static String sanitizeError(String body) { + if (body == null) { + return ""; + } + String trimmed = body.length() > 500 ? body.substring(0, 500) + "…" : body; + return trimmed.replaceAll("(?i)\\b(token|authorization|bearer)\\b\\s*[:=]?\\s*\\S+", "$1=***"); + } + + public static String normalizeHost(String host) { + String h = host.trim(); + if (!h.startsWith("http://") && !h.startsWith("https://")) { + h = "https://" + h; + } + while (h.endsWith("/")) { + h = h.substring(0, h.length() - 1); + } + return h; + } + + private static long contentLength(String header) { + if (StringUtils.isBlank(header)) { + return -1L; + } + try { + return Long.parseLong(header.trim()); + } catch (NumberFormatException e) { + return -1L; + } + } + + private JSONObject parseObject(String body) throws HopException { + try { + Object parsed = parser.parse(body); + if (!(parsed instanceof JSONObject)) { + throw new HopException("Expected JSON object from Databricks API"); + } + return (JSONObject) parsed; + } catch (HopException e) { + throw e; + } catch (Exception e) { + throw new HopException("Unable to parse Databricks API response", e); + } + } + + private static String resolve(IVariables variables, String value) { + if (value == null) { + return null; + } + return variables != null ? variables.resolve(value) : value; + } +} diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksJobsClient.java b/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksJobsClient.java index 8137b30b477..97ebbe2bc29 100644 --- a/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksJobsClient.java +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksJobsClient.java @@ -42,8 +42,9 @@ /** * Databricks Jobs API client using {@link HttpClient} and Jobs REST endpoints (default base {@code - * /api/2.1}). Does not log tokens. Uploads use the Files API for UC Volumes / Workspace paths and - * the legacy DBFS API for classic {@code dbfs:/} roots. + * /api/2.1}). Does not log tokens. Uploads use the Files API for UC Volumes / Workspace paths + * (delegated to {@link RestDatabricksFilesClient}) and the legacy DBFS API for classic {@code + * dbfs:/} roots. */ public final class RestDatabricksJobsClient implements DatabricksJobsClient { @@ -53,13 +54,11 @@ public final class RestDatabricksJobsClient implements DatabricksJobsClient { /** DBFS add-block max is 1 MiB of base64-decoded data. */ private static final int DBFS_BLOCK_BYTES = 1024 * 1024; - /** Files API single PUT supports files up to 5 GiB. */ - private static final String FILES_API_PREFIX = "/api/2.0/fs/files"; - private final String hostBase; private final String apiBase; private final String token; private final HttpClient httpClient; + private final RestDatabricksFilesClient filesClient; private final JSONParser parser = new JSONParser(); public RestDatabricksJobsClient( @@ -68,6 +67,7 @@ public RestDatabricksJobsClient( this.apiBase = normalizeApiBase(apiBase); this.token = Objects.requireNonNull(token, "token"); this.httpClient = Objects.requireNonNull(httpClient, "httpClient"); + this.filesClient = new RestDatabricksFilesClient(this.hostBase, this.token, this.httpClient); } public static RestDatabricksJobsClient create( @@ -96,6 +96,11 @@ public static RestDatabricksJobsClient createForTest( return new RestDatabricksJobsClient(hostBase, apiBase, token, httpClient); } + /** Files API client shared for Volume / Workspace paths (deploy + VFS). */ + public RestDatabricksFilesClient files() { + return filesClient; + } + @Override public String testConnection() throws HopException { // Prefer SCIM me when available; fall back to listing one job. @@ -198,7 +203,7 @@ public void uploadToDbfs(Path localFile, String dbfsPath) throws HopException { } String path = normalizeDbfsPath(dbfsPath); if (isFilesApiPath(path)) { - uploadViaFilesApi(localFile, path); + filesClient.upload(localFile, path); } else { uploadViaDbfsApi(localFile, path); } @@ -208,7 +213,7 @@ public void uploadToDbfs(Path localFile, String dbfsPath) throws HopException { public WorkspaceFileMetadata getFileMetadata(String workspacePath) throws HopException { String path = normalizeDbfsPath(workspacePath); if (isFilesApiPath(path)) { - return getFileMetadataFilesApi(path); + return filesClient.getFileMetadata(path); } return getFileMetadataDbfs(path); } @@ -217,13 +222,18 @@ public WorkspaceFileMetadata getFileMetadata(String workspacePath) throws HopExc public Optional downloadTextIfExists(String workspacePath) throws HopException { String path = normalizeDbfsPath(workspacePath); if (isFilesApiPath(path)) { - return downloadTextFilesApi(path); + return filesClient.downloadTextIfExists(path); } return downloadTextDbfs(path); } @Override public void uploadText(String workspacePath, String text) throws HopException { + String path = normalizeDbfsPath(workspacePath); + if (isFilesApiPath(path)) { + filesClient.uploadText(path, text); + return; + } if (text == null) { text = ""; } @@ -231,7 +241,7 @@ public void uploadText(String workspacePath, String text) throws HopException { Path tmp = Files.createTempFile("hop-dbx-text-", ".txt"); try { Files.writeString(tmp, text, StandardCharsets.UTF_8); - uploadToDbfs(tmp, workspacePath); + uploadViaDbfsApi(tmp, path); } finally { Files.deleteIfExists(tmp); } @@ -247,149 +257,7 @@ public void uploadText(String workspacePath, String text) throws HopException { * the legacy DBFS block API. */ static boolean isFilesApiPath(String absolutePath) { - if (StringUtils.isBlank(absolutePath)) { - return false; - } - String p = absolutePath.trim(); - return p.startsWith("/Volumes/") - || p.equals("/Volumes") - || p.startsWith("/Workspace/") - || p.equals("/Workspace"); - } - - /** - * Upload via {@code PUT /api/2.0/fs/files{path}?overwrite=true} (UC Volumes / Workspace). Body is - * raw octets; max ~5 GiB per Databricks Files API. - */ - private void uploadViaFilesApi(Path localFile, String absolutePath) throws HopException { - try { - String encodedPath = encodeFilesApiPath(absolutePath); - String url = hostBase + FILES_API_PREFIX + encodedPath + "?overwrite=true"; - HttpRequest request = - HttpRequest.newBuilder() - .uri(URI.create(url)) - .timeout(UPLOAD_TIMEOUT) - .header("Authorization", "Bearer " + token) - .header("Content-Type", "application/octet-stream") - .PUT(HttpRequest.BodyPublishers.ofFile(localFile)) - .build(); - HttpResponse response = - httpClient.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); - int code = response.statusCode(); - String body = response.body() == null ? "" : response.body(); - if (code < 200 || code >= 300) { - throw new HopException( - "Databricks API HTTP " - + code - + " for PUT " - + FILES_API_PREFIX - + absolutePath - + ": " - + sanitizeError(body)); - } - } catch (HopException e) { - throw e; - } catch (Exception e) { - throw new HopException( - "Failed to upload " + localFile + " to " + absolutePath + " via Files API", e); - } - } - - /** - * Files API get-metadata: HEAD {@code /api/2.0/fs/files{path}} — size from Content-Length (no - * body). - */ - private WorkspaceFileMetadata getFileMetadataFilesApi(String absolutePath) throws HopException { - try { - String encodedPath = encodeFilesApiPath(absolutePath); - String url = hostBase + FILES_API_PREFIX + encodedPath; - HttpRequest request = - HttpRequest.newBuilder() - .uri(URI.create(url)) - .timeout(TIMEOUT) - .header("Authorization", "Bearer " + token) - .method("HEAD", HttpRequest.BodyPublishers.noBody()) - .build(); - HttpResponse response = - httpClient.send(request, HttpResponse.BodyHandlers.discarding()); - int code = response.statusCode(); - if (code == 404) { - return WorkspaceFileMetadata.missing(); - } - if (code < 200 || code >= 300) { - // Some gateways reject HEAD — fall back to GET with range 0-0 for size - return getFileMetadataFilesApiGetHeaders(absolutePath); - } - long size = contentLength(response.headers().firstValue("Content-Length").orElse(null)); - if (size < 0) { - size = contentLength(response.headers().firstValue("content-length").orElse(null)); - } - if (size < 0) { - return getFileMetadataFilesApiGetHeaders(absolutePath); - } - return WorkspaceFileMetadata.ofFile(size); - } catch (HopException e) { - throw e; - } catch (Exception e) { - throw new HopException("Failed to get metadata for " + absolutePath, e); - } - } - - private WorkspaceFileMetadata getFileMetadataFilesApiGetHeaders(String absolutePath) - throws HopException { - try { - String encodedPath = encodeFilesApiPath(absolutePath); - String url = hostBase + FILES_API_PREFIX + encodedPath; - HttpRequest request = - HttpRequest.newBuilder() - .uri(URI.create(url)) - .timeout(TIMEOUT) - .header("Authorization", "Bearer " + token) - .header("Range", "bytes=0-0") - .GET() - .build(); - HttpResponse response = - httpClient.send(request, HttpResponse.BodyHandlers.ofByteArray()); - int code = response.statusCode(); - if (code == 404) { - return WorkspaceFileMetadata.missing(); - } - if (code != 200 && code != 206) { - String errBody = - response.body() == null ? "" : new String(response.body(), StandardCharsets.UTF_8); - throw new HopException( - "Databricks API HTTP " - + code - + " for GET " - + FILES_API_PREFIX - + absolutePath - + ": " - + sanitizeError(errBody)); - } - Optional contentRange = response.headers().firstValue("Content-Range"); - if (contentRange.isPresent()) { - // bytes 0-0/12345 - String cr = contentRange.get(); - int slash = cr.lastIndexOf('/'); - if (slash > 0 && slash < cr.length() - 1) { - try { - return WorkspaceFileMetadata.ofFile(Long.parseLong(cr.substring(slash + 1).trim())); - } catch (NumberFormatException ignored) { - // fall through - } - } - } - long size = contentLength(response.headers().firstValue("Content-Length").orElse(null)); - if (size >= 0 && code == 200) { - return WorkspaceFileMetadata.ofFile(size); - } - // Last resort: full GET is too heavy — treat as missing size (force re-upload) - return WorkspaceFileMetadata.missing(); - } catch (HopException e) { - throw e; - } catch (Exception e) { - throw new HopException("Failed to get metadata for " + absolutePath, e); - } + return RestDatabricksFilesClient.isFilesApiPath(absolutePath); } private WorkspaceFileMetadata getFileMetadataDbfs(String path) throws HopException { @@ -414,44 +282,6 @@ private WorkspaceFileMetadata getFileMetadataDbfs(String path) throws HopExcepti } } - private Optional downloadTextFilesApi(String absolutePath) throws HopException { - try { - String encodedPath = encodeFilesApiPath(absolutePath); - String url = hostBase + FILES_API_PREFIX + encodedPath; - HttpRequest request = - HttpRequest.newBuilder() - .uri(URI.create(url)) - .timeout(TIMEOUT) - .header("Authorization", "Bearer " + token) - .GET() - .build(); - HttpResponse response = - httpClient.send(request, HttpResponse.BodyHandlers.ofByteArray()); - int code = response.statusCode(); - if (code == 404) { - return Optional.empty(); - } - if (code < 200 || code >= 300) { - String errBody = - response.body() == null ? "" : new String(response.body(), StandardCharsets.UTF_8); - throw new HopException( - "Databricks API HTTP " - + code - + " for GET " - + FILES_API_PREFIX - + absolutePath - + ": " - + sanitizeError(errBody)); - } - byte[] bytes = response.body() == null ? new byte[0] : response.body(); - return Optional.of(new String(bytes, StandardCharsets.UTF_8)); - } catch (HopException e) { - throw e; - } catch (Exception e) { - throw new HopException("Failed to download " + absolutePath, e); - } - } - private Optional downloadTextDbfs(String path) throws HopException { try { // Single-block read: small sidecar files only @@ -480,17 +310,6 @@ private Optional downloadTextDbfs(String path) throws HopException { } } - private static long contentLength(String header) { - if (StringUtils.isBlank(header)) { - return -1L; - } - try { - return Long.parseLong(header.trim()); - } catch (NumberFormatException e) { - return -1L; - } - } - /** Legacy DBFS create / add-block / close for classic {@code dbfs:/} paths. */ private void uploadViaDbfsApi(Path localFile, String path) throws HopException { try { @@ -528,7 +347,7 @@ private void uploadViaDbfsApi(Path localFile, String path) throws HopException { @Override public void close() { - // HttpClient does not require close + filesClient.close(); } /** @@ -536,17 +355,7 @@ public void close() { * dbfs:/Volumes/…} becomes {@code /Volumes/…} so the Files API route is selected. */ static String normalizeDbfsPath(String dbfsPath) throws HopException { - if (StringUtils.isBlank(dbfsPath)) { - throw new HopException("Upload path is required"); - } - String p = dbfsPath.trim(); - if (p.startsWith("dbfs:")) { - p = p.substring("dbfs:".length()); - } - if (!p.startsWith("/")) { - p = "/" + p; - } - return p; + return RestDatabricksFilesClient.normalizeWorkspacePath(dbfsPath); } /** @@ -554,16 +363,7 @@ static String normalizeDbfsPath(String dbfsPath) throws HopException { * each segment). */ static String encodeFilesApiPath(String absolutePath) { - String p = absolutePath.startsWith("/") ? absolutePath : "/" + absolutePath; - String[] parts = p.split("/", -1); - StringBuilder sb = new StringBuilder(); - for (String part : parts) { - if (part.isEmpty()) { - continue; - } - sb.append('/').append(URLEncoder.encode(part, StandardCharsets.UTF_8).replace("+", "%20")); - } - return sb.length() == 0 ? "/" : sb.toString(); + return RestDatabricksFilesClient.encodeFilesApiPath(absolutePath); } private String get(String path) throws HopException { @@ -651,22 +451,11 @@ private static long requireLong(JSONObject json, String key) throws HopException /** Strip likely secrets from error payloads before logging. */ static String sanitizeError(String body) { - if (body == null) { - return ""; - } - String trimmed = body.length() > 500 ? body.substring(0, 500) + "…" : body; - return trimmed.replaceAll("(?i)\\b(token|authorization|bearer)\\b\\s*[:=]?\\s*\\S+", "$1=***"); + return RestDatabricksFilesClient.sanitizeError(body); } static String normalizeHost(String host) { - String h = host.trim(); - if (!h.startsWith("http://") && !h.startsWith("https://")) { - h = "https://" + h; - } - while (h.endsWith("/")) { - h = h.substring(0, h.length() - 1); - } - return h; + return RestDatabricksFilesClient.normalizeHost(host); } static String normalizeApiBase(String apiBase) { diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/metadata/DatabricksConnection.java b/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/metadata/DatabricksConnection.java index 5f9d235ff2c..12418bf0558 100644 --- a/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/metadata/DatabricksConnection.java +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/metadata/DatabricksConnection.java @@ -31,7 +31,9 @@ /** * Workspace connection for the Databricks REST / Jobs API (not JDBC SQL warehouse). Used by - * Databricks Job Run actions and related Jobs API clients. + * Databricks Job Run actions and related Jobs API clients. Also referenced by Databricks VFS + * Connection metadata for Volumes / Workspace file access (host + PAT only — VFS scheme is the VFS + * metadata name, not this connection name). */ @Getter @Setter diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileName.java b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileName.java new file mode 100644 index 00000000000..dfafda49bc1 --- /dev/null +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileName.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.vfs.databricks; + +import org.apache.commons.vfs2.FileName; +import org.apache.commons.vfs2.FileType; +import org.apache.commons.vfs2.provider.AbstractFileName; + +/** Absolute workspace path under a named Databricks connection scheme. */ +public class DatabricksFileName extends AbstractFileName { + + protected DatabricksFileName(final String scheme, final String path, final FileType type) { + super(scheme, path, type); + } + + @Override + public FileName createName(String path, FileType type) { + return new DatabricksFileName(getScheme(), path, type); + } + + @Override + protected void appendRootUri(StringBuilder buffer, boolean addPassword) { + buffer.append(getScheme()); + // Connection is the scheme; path is absolute (/Volumes/… or /Workspace/…). + buffer.append("://"); + } +} diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileNameParser.java b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileNameParser.java new file mode 100644 index 00000000000..da770d9691f --- /dev/null +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileNameParser.java @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.vfs.databricks; + +import org.apache.commons.vfs2.FileName; +import org.apache.commons.vfs2.FileSystemException; +import org.apache.commons.vfs2.FileType; +import org.apache.commons.vfs2.provider.AbstractFileNameParser; +import org.apache.commons.vfs2.provider.FileNameParser; +import org.apache.commons.vfs2.provider.UriParser; +import org.apache.commons.vfs2.provider.VfsComponentContext; + +/** Parser for {@code connectionName:///Volumes/...} style URIs. */ +public class DatabricksFileNameParser extends AbstractFileNameParser { + private static final DatabricksFileNameParser INSTANCE = new DatabricksFileNameParser(); + + private DatabricksFileNameParser() { + super(); + } + + public static FileNameParser getInstance() { + return INSTANCE; + } + + @Override + public FileName parseUri(VfsComponentContext context, FileName base, String uri) + throws FileSystemException { + StringBuilder name = new StringBuilder(); + + String scheme = UriParser.extractScheme(context.getFileSystemManager().getSchemes(), uri, name); + + UriParser.canonicalizePath(name, 0, name.length(), this); + UriParser.fixSeparators(name); + FileType fileType = UriParser.normalisePath(name); + + return new DatabricksFileName(scheme, name.toString(), fileType); + } +} diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileObject.java b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileObject.java new file mode 100644 index 00000000000..4bbb6d5f2bd --- /dev/null +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileObject.java @@ -0,0 +1,354 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.vfs.databricks; + +import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.List; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.vfs2.FileNotFoundException; +import org.apache.commons.vfs2.FileObject; +import org.apache.commons.vfs2.FileSystemException; +import org.apache.commons.vfs2.FileType; +import org.apache.commons.vfs2.provider.AbstractFileName; +import org.apache.commons.vfs2.provider.AbstractFileObject; +import org.apache.hop.core.exception.HopException; +import org.apache.hop.databricks.client.DatabricksFilesClient; +import org.apache.hop.databricks.client.DirectoryEntry; +import org.apache.hop.databricks.client.RestDatabricksFilesClient; +import org.apache.hop.databricks.client.WorkspaceFileMetadata; + +/** File object backed by the Databricks Files API (UC Volumes / Workspace). */ +public class DatabricksFileObject extends AbstractFileObject { + + private FileType type = FileType.IMAGINARY; + private long size = -1L; + private long lastModified = 0L; + private List listedChildren; + + protected DatabricksFileObject(final AbstractFileName name, final DatabricksFileSystem fileSystem) + throws FileSystemException { + super(name, fileSystem); + } + + private DatabricksFilesClient client() throws FileSystemException { + return getAbstractFileSystem().getClient(); + } + + /** + * Absolute workspace path for the Files API. When the VFS connection has a root path, logical + * paths such as {@code /input} map under that root. + */ + String workspacePath() { + return DatabricksPathResolver.toWorkspacePath( + getName().getPath(), getAbstractFileSystem().getRootPath()); + } + + @Override + protected void doAttach() throws Exception { + String path = workspacePath(); + if ("/".equals(path)) { + // No root configured — virtual multi-volume root + type = FileType.FOLDER; + size = -1L; + return; + } + if (!RestDatabricksFilesClient.isFilesApiPath(path)) { + if ("/Volumes".equals(path) || "/Workspace".equals(path)) { + type = FileType.FOLDER; + size = -1L; + return; + } + type = FileType.IMAGINARY; + size = -1L; + return; + } + + // Configured scheme root is always a folder (the volume / workspace dir exists or is managed) + if (getAbstractFileSystem().hasRootPath() + && path.equals(getAbstractFileSystem().getRootPath())) { + try { + listedChildren = client().listDirectory(path); + type = FileType.FOLDER; + size = -1L; + } catch (HopException e) { + // Still treat as folder so create child works even if list fails (empty / permission) + type = FileType.FOLDER; + size = -1L; + listedChildren = null; + } + return; + } + + DatabricksFilesClient client = client(); + WorkspaceFileMetadata meta = client.getFileMetadata(path); + if (meta.exists()) { + type = FileType.FILE; + size = meta.sizeBytes(); + return; + } + try { + listedChildren = client.listDirectory(path); + type = FileType.FOLDER; + size = -1L; + } catch (HopException e) { + type = FileType.IMAGINARY; + size = -1L; + listedChildren = null; + } + } + + @Override + protected void doDetach() { + type = FileType.IMAGINARY; + size = -1L; + lastModified = 0L; + listedChildren = null; + } + + @Override + protected FileType doGetType() { + return type; + } + + @Override + protected long doGetContentSize() { + return size; + } + + @Override + protected long doGetLastModifiedTime() { + return lastModified; + } + + @Override + protected String[] doListChildren() throws Exception { + if (type != FileType.FOLDER) { + return null; + } + String path = workspacePath(); + if ("/".equals(path)) { + return new String[] {"Volumes/", "Workspace/"}; + } + if ("/Volumes".equals(path) || "/Workspace".equals(path)) { + return new String[0]; + } + if (listedChildren == null) { + listedChildren = client().listDirectory(path); + } + return listedChildren.stream() + .map( + e -> { + String n = e.name(); + if (e.directory() && n != null && !n.endsWith("/")) { + return n + "/"; + } + return n; + }) + .toArray(String[]::new); + } + + @Override + protected InputStream doGetInputStream() throws Exception { + if (type != FileType.FILE) { + throw new FileNotFoundException(getName()); + } + return client().openInputStream(workspacePath()); + } + + @Override + protected OutputStream doGetOutputStream(boolean append) throws Exception { + if (append) { + throw new FileSystemException( + "vfs.provider/write-append-not-supported.error", workspacePath()); + } + String path = workspacePath(); + if (!RestDatabricksFilesClient.isFilesApiPath(path)) { + throw new FileSystemException( + "Databricks VFS only supports /Volumes/… and /Workspace/… paths" + + (getAbstractFileSystem().hasRootPath() + ? " (or paths under the connection root path)" + : "") + + ", got workspace path: " + + path + + " from logical path: " + + getName().getPath()); + } + Path temp = Files.createTempFile("hop-dbx-vfs-", ".bin"); + OutputStream fileOut = Files.newOutputStream(temp); + return new FilterOutputStream(fileOut) { + private boolean closed; + + @Override + public void close() throws IOException { + if (closed) { + return; + } + closed = true; + try { + super.close(); + try { + client().upload(temp, path); + } catch (FileSystemException e) { + throw new IOException(e); + } catch (HopException e) { + throw new IOException(e); + } + try { + type = FileType.FILE; + size = Files.size(temp); + } catch (IOException ignored) { + type = FileType.FILE; + } + } finally { + try { + Files.deleteIfExists(temp); + } catch (IOException ignored) { + // best effort + } + } + } + }; + } + + @Override + protected void doCreateFolder() throws Exception { + String path = workspacePath(); + // VFS createFile/getOutputStream walks parents. Volume roots and the configured scheme root + // already exist (or cannot be created via Files API) — treat as present. + if (isPreexistingWorkspaceRoot(path, getAbstractFileSystem().getRootPath())) { + type = FileType.FOLDER; + return; + } + if (!RestDatabricksFilesClient.isFilesApiPath(path)) { + throw new FileSystemException( + "Databricks VFS only supports creating folders under /Volumes/… or /Workspace/…, got: " + + path + + " (logical: " + + getName().getPath() + + (getAbstractFileSystem().hasRootPath() + ? ", root: " + getAbstractFileSystem().getRootPath() + : "") + + ")"); + } + client().createDirectory(path); + type = FileType.FOLDER; + listedChildren = null; + } + + /** + * Paths that are not user-created directories via Files API: filesystem root, {@code /Volumes}, + * {@code /Workspace}, catalog/schema/volume levels, shallow Workspace roots, and the configured + * scheme root itself. + */ + static boolean isPreexistingWorkspaceRoot(String path, String schemeRoot) { + if (StringUtils.isNotBlank(schemeRoot) && schemeRoot.equals(path)) { + return true; + } + if (StringUtils.isBlank(path) || "/".equals(path)) { + return true; + } + if ("/Volumes".equals(path) || "/Workspace".equals(path)) { + return true; + } + // /Volumes/// — volume object must already exist + if (path.startsWith("/Volumes/")) { + // "", "Volumes", catalog, schema, volume → length 5 + return path.split("/", -1).length <= 5; + } + // /Workspace/Users and similar shallow trees are managed by the workspace + if (path.startsWith("/Workspace/")) { + return path.split("/", -1).length <= 3; + } + return false; + } + + @Override + protected void doDelete() throws Exception { + String path = workspacePath(); + if (!RestDatabricksFilesClient.isFilesApiPath(path)) { + throw new FileSystemException("Cannot delete path: " + path); + } + if (getAbstractFileSystem().hasRootPath() + && path.equals(getAbstractFileSystem().getRootPath())) { + throw new FileSystemException("Cannot delete the configured VFS root path: " + path); + } + if (type == FileType.FOLDER) { + client().deleteDirectory(path, true); + } else { + client().deleteFile(path); + } + type = FileType.IMAGINARY; + listedChildren = null; + } + + /** + * Files API has no rename endpoint: copy via download+upload then delete the source (same pattern + * as MinIO object rename). Folders are not supported. + */ + @Override + protected void doRename(FileObject newFile) throws Exception { + if (getType() == FileType.FOLDER) { + throw new FileSystemException( + "Databricks VFS does not support renaming folders (move files individually): " + + workspacePath()); + } + if (!(newFile instanceof DatabricksFileObject dest)) { + throw new FileSystemException( + "Cannot rename Databricks VFS file to a different file system: " + newFile); + } + String sourcePath = workspacePath(); + String destPath = dest.workspacePath(); + if (!RestDatabricksFilesClient.isFilesApiPath(sourcePath) + || !RestDatabricksFilesClient.isFilesApiPath(destPath)) { + throw new FileSystemException( + "Rename requires Files API paths under /Volumes or /Workspace (source=" + + sourcePath + + ", dest=" + + destPath + + ")"); + } + if (sourcePath.equals(destPath)) { + return; + } + Path temp = Files.createTempFile("hop-dbx-rename-", ".bin"); + try { + try (InputStream in = client().openInputStream(sourcePath)) { + Files.copy(in, temp, StandardCopyOption.REPLACE_EXISTING); + } + client().upload(temp, destPath); + client().deleteFile(sourcePath); + } catch (HopException e) { + throw new FileSystemException( + "Failed to rename " + sourcePath + " to " + destPath + " via Files API", e); + } finally { + try { + Files.deleteIfExists(temp); + } catch (IOException ignored) { + // best effort + } + } + type = FileType.IMAGINARY; + listedChildren = null; + } +} diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileProvider.java b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileProvider.java new file mode 100644 index 00000000000..d695084fa10 --- /dev/null +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileProvider.java @@ -0,0 +1,130 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.vfs.databricks; + +import java.util.Collection; +import java.util.Set; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.vfs2.Capability; +import org.apache.commons.vfs2.FileName; +import org.apache.commons.vfs2.FileSystem; +import org.apache.commons.vfs2.FileSystemException; +import org.apache.commons.vfs2.FileSystemOptions; +import org.apache.commons.vfs2.provider.AbstractOriginatingFileProvider; +import org.apache.hop.core.exception.HopException; +import org.apache.hop.core.variables.IVariables; +import org.apache.hop.databricks.client.RestDatabricksFilesClient; +import org.apache.hop.databricks.metadata.DatabricksConnection; +import org.apache.hop.metadata.api.IHopMetadataProvider; +import org.apache.hop.metadata.util.HopMetadataUtil; +import org.apache.hop.vfs.databricks.metadata.DatabricksVfsConnection; + +/** + * Originating provider for Databricks Files API paths. Bound to a named {@link + * DatabricksVfsConnection} whose name is the VFS scheme; auth is resolved via the referenced {@link + * DatabricksConnection}. Optional root path shortens URIs relative to a volume or workspace folder. + */ +public class DatabricksFileProvider extends AbstractOriginatingFileProvider { + + protected static final Collection CAPABILITIES = + Set.of( + Capability.CREATE, + Capability.DELETE, + Capability.RENAME, + Capability.GET_TYPE, + Capability.LIST_CHILDREN, + Capability.READ_CONTENT, + Capability.URI, + Capability.WRITE_CONTENT, + Capability.GET_LAST_MODIFIED); + + private static final FileSystemOptions DEFAULT_OPTIONS = new FileSystemOptions(); + + private final IVariables variables; + private final DatabricksVfsConnection vfsConnection; + + public DatabricksFileProvider() { + this(null, null); + } + + public DatabricksFileProvider(IVariables variables, DatabricksVfsConnection vfsConnection) { + super(); + this.variables = variables; + this.vfsConnection = vfsConnection; + setFileNameParser(DatabricksFileNameParser.getInstance()); + } + + @Override + public Collection getCapabilities() { + return CAPABILITIES; + } + + @Override + protected FileSystem doCreateFileSystem(FileName rootName, FileSystemOptions fileSystemOptions) + throws FileSystemException { + FileSystemOptions opts = fileSystemOptions != null ? fileSystemOptions : DEFAULT_OPTIONS; + if (vfsConnection == null || variables == null) { + // Default FSM registration path — no live client until a named provider is used. + return new DatabricksFileSystem(rootName, null, opts, ""); + } + try { + DatabricksConnection connection = resolveDatabricksConnection(); + RestDatabricksFilesClient client = RestDatabricksFilesClient.create(connection, variables); + String rootPath = resolveRootPath(); + return new DatabricksFileSystem(rootName, client, opts, rootPath); + } catch (HopException e) { + throw new FileSystemException( + "Unable to create Databricks Files client for VFS connection '" + + vfsConnection.getName() + + "'", + e); + } + } + + private String resolveRootPath() throws HopException { + String raw = vfsConnection.getDefaultBasePath(); + if (StringUtils.isBlank(raw)) { + return ""; + } + return DatabricksPathResolver.normalizeRootPath(variables.resolve(raw)); + } + + private DatabricksConnection resolveDatabricksConnection() throws HopException { + String connName = vfsConnection.getDatabricksConnectionName(); + if (StringUtils.isBlank(connName)) { + throw new HopException( + "Databricks VFS connection '" + + vfsConnection.getName() + + "' has no Databricks Connection selected"); + } + connName = variables.resolve(connName); + IHopMetadataProvider metadataProvider = + HopMetadataUtil.getStandardHopMetadataProvider(variables); + DatabricksConnection connection = + metadataProvider.getSerializer(DatabricksConnection.class).load(connName); + if (connection == null) { + throw new HopException( + "Databricks Connection '" + + connName + + "' not found (referenced by VFS connection '" + + vfsConnection.getName() + + "')"); + } + return connection; + } +} diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileSystem.java b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileSystem.java new file mode 100644 index 00000000000..121348383c9 --- /dev/null +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileSystem.java @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.vfs.databricks; + +import java.util.Collection; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.vfs2.Capability; +import org.apache.commons.vfs2.FileName; +import org.apache.commons.vfs2.FileObject; +import org.apache.commons.vfs2.FileSystemException; +import org.apache.commons.vfs2.FileSystemOptions; +import org.apache.commons.vfs2.provider.AbstractFileName; +import org.apache.commons.vfs2.provider.AbstractFileSystem; +import org.apache.hop.databricks.client.DatabricksFilesClient; + +public class DatabricksFileSystem extends AbstractFileSystem { + + private final DatabricksFilesClient client; + + /** Normalized scheme root, or empty when absolute workspace paths are required. */ + private final String rootPath; + + protected DatabricksFileSystem( + final FileName rootName, + final DatabricksFilesClient client, + final FileSystemOptions fileSystemOptions) { + this(rootName, client, fileSystemOptions, ""); + } + + protected DatabricksFileSystem( + final FileName rootName, + final DatabricksFilesClient client, + final FileSystemOptions fileSystemOptions, + final String rootPath) { + super(rootName, null, fileSystemOptions); + this.client = client; + this.rootPath = rootPath == null ? "" : rootPath; + } + + @Override + protected void addCapabilities(final Collection caps) { + caps.addAll(DatabricksFileProvider.CAPABILITIES); + } + + @Override + protected FileObject createFile(final AbstractFileName name) throws FileSystemException { + return new DatabricksFileObject(name, this); + } + + DatabricksFilesClient getClient() throws FileSystemException { + if (client == null) { + throw new FileSystemException( + "Databricks VFS is not bound to a connection. Use a named Databricks VFS Connection as the URI scheme."); + } + return client; + } + + /** Scheme root (e.g. {@code /Volumes/cat/schema/vol}), or blank. */ + String getRootPath() { + return rootPath; + } + + boolean hasRootPath() { + return StringUtils.isNotBlank(rootPath); + } +} diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksPathResolver.java b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksPathResolver.java new file mode 100644 index 00000000000..44552447861 --- /dev/null +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksPathResolver.java @@ -0,0 +1,87 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.vfs.databricks; + +import org.apache.commons.lang3.StringUtils; +import org.apache.hop.core.exception.HopException; +import org.apache.hop.databricks.client.RestDatabricksFilesClient; + +/** + * Maps logical VFS paths ({@code scheme:///input}) to absolute Databricks workspace paths under an + * optional scheme root (metadata default base path). + */ +public final class DatabricksPathResolver { + + private DatabricksPathResolver() {} + + /** + * Normalize a configured root path: trim, strip optional {@code dbfs:}, ensure leading slash, no + * trailing slash (except never return empty for a non-blank input). + */ + public static String normalizeRootPath(String rootPath) throws HopException { + if (StringUtils.isBlank(rootPath)) { + return ""; + } + String p = RestDatabricksFilesClient.normalizeWorkspacePath(rootPath); + while (p.length() > 1 && p.endsWith("/")) { + p = p.substring(0, p.length() - 1); + } + if (!RestDatabricksFilesClient.isFilesApiPath(p)) { + throw new HopException( + "Databricks VFS root path must be under /Volumes/… or /Workspace/…, got: " + p); + } + return p; + } + + /** + * Resolve a logical VFS path to a workspace path. + * + * @param logicalPath path from VFS {@link org.apache.commons.vfs2.FileName#getPath()} (e.g. + * {@code /input} or {@code /}) + * @param rootPath normalized scheme root, or empty when URIs must be absolute workspace paths + */ + public static String toWorkspacePath(String logicalPath, String rootPath) { + String logical = logicalPath; + if (StringUtils.isBlank(logical) || "/".equals(logical)) { + logical = "/"; + } else { + while (logical.length() > 1 && logical.endsWith("/")) { + logical = logical.substring(0, logical.length() - 1); + } + if (!logical.startsWith("/")) { + logical = "/" + logical; + } + } + + String root = StringUtils.isBlank(rootPath) ? "" : rootPath.trim(); + if (StringUtils.isBlank(root)) { + return logical; + } + + // Escape hatch: full workspace path in the URI even when a root is configured + if (RestDatabricksFilesClient.isFilesApiPath(logical)) { + return logical; + } + + if ("/".equals(logical)) { + return root; + } + // root has no trailing slash; logical starts with / + return root + logical; + } +} diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksVfsPlugin.java b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksVfsPlugin.java new file mode 100644 index 00000000000..ab81b04ab4f --- /dev/null +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksVfsPlugin.java @@ -0,0 +1,75 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.vfs.databricks; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.vfs2.provider.FileProvider; +import org.apache.hop.core.logging.LogChannel; +import org.apache.hop.core.variables.IVariables; +import org.apache.hop.core.vfs.plugin.IVfs; +import org.apache.hop.core.vfs.plugin.VfsPlugin; +import org.apache.hop.metadata.api.IHopMetadataProvider; +import org.apache.hop.metadata.util.HopMetadataUtil; +import org.apache.hop.vfs.databricks.metadata.DatabricksVfsConnection; + +/** + * Registers one Commons VFS scheme per named {@link DatabricksVfsConnection}. Auth is resolved from + * the referenced Databricks Connection. URIs look like {@code + * my-vfs:///Volumes/catalog/schema/volume/file.csv}. + */ +@VfsPlugin( + type = "databricks-vfs-connection", + typeDescription = "Databricks Volumes / Workspace VFS (named connections)", + classLoaderGroup = "vfs-databricks") +public class DatabricksVfsPlugin implements IVfs { + + @Override + public String[] getUrlSchemes() { + // Schemes come from named Databricks VFS Connection metadata. + return new String[] {}; + } + + @Override + public FileProvider getProvider() { + return new DatabricksFileProvider(); + } + + @Override + public Map getProviders(IVariables variables) { + Map providers = new HashMap<>(); + try { + IHopMetadataProvider metadataProvider = + HopMetadataUtil.getStandardHopMetadataProvider(variables); + List connections = + metadataProvider.getSerializer(DatabricksVfsConnection.class).loadAll(); + for (DatabricksVfsConnection connection : connections) { + String name = connection.getName(); + if (StringUtils.isEmpty(name)) { + continue; + } + providers.put(name, new DatabricksFileProvider(variables, connection)); + } + } catch (Exception e) { + LogChannel.GENERAL.logError("Unable to load Databricks VFS providers", e); + } + return providers; + } +} diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/metadata/DatabricksVfsConnection.java b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/metadata/DatabricksVfsConnection.java new file mode 100644 index 00000000000..382cc33c984 --- /dev/null +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/metadata/DatabricksVfsConnection.java @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.vfs.databricks.metadata; + +import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; +import org.apache.hop.core.gui.plugin.GuiElementType; +import org.apache.hop.core.gui.plugin.GuiPlugin; +import org.apache.hop.core.gui.plugin.GuiWidgetElement; +import org.apache.hop.databricks.metadata.DatabricksConnection; +import org.apache.hop.metadata.api.HopMetadata; +import org.apache.hop.metadata.api.HopMetadataBase; +import org.apache.hop.metadata.api.HopMetadataCategory; +import org.apache.hop.metadata.api.HopMetadataProperty; +import org.apache.hop.metadata.api.HopMetadataPropertyType; +import org.apache.hop.metadata.api.IHopMetadata; + +/** + * Named Databricks Volumes / Workspace VFS endpoint. The metadata name is the VFS + * URI scheme (for example {@code dbx-jars:///Volumes/...}). Authentication comes from a referenced + * {@link DatabricksConnection} (host + PAT), not from credentials stored on this object. + */ +@Getter +@Setter +@GuiPlugin +@HopMetadata( + key = "DatabricksVfsConnectionDefinition", + name = "i18n::DatabricksVfsConnection.Name", + description = "i18n::DatabricksVfsConnection.Description", + image = "databricks-connection.svg", + category = HopMetadataCategory.FILE_STORAGE, + documentationUrl = "/metadata-types/databricks-vfs-connection.html", + hopMetadataPropertyType = HopMetadataPropertyType.VFS_DATABRICKS_CONNECTION) +public class DatabricksVfsConnection extends HopMetadataBase implements Serializable, IHopMetadata { + + private static final String PARENT = DatabricksVfsConnectionEditor.GUI_WIDGETS_PARENT_ID; + + @GuiWidgetElement( + id = "10000-description", + parentId = PARENT, + type = GuiElementType.TEXT, + label = "i18n::DatabricksVfsConnection.Description.Label", + toolTip = "i18n::DatabricksVfsConnection.Description.Tooltip") + @HopMetadataProperty + private String description; + + /** + * Name of the {@link DatabricksConnection} that supplies workspace host and personal access + * token. + */ + @GuiWidgetElement( + id = "10010-databricks-connection", + parentId = PARENT, + type = GuiElementType.METADATA, + metadata = DatabricksConnection.class, + label = "i18n::DatabricksVfsConnection.Connection.Label", + toolTip = "i18n::DatabricksVfsConnection.Connection.Tooltip") + @HopMetadataProperty + private String databricksConnectionName; + + /** + * Optional absolute workspace root for this scheme (for example {@code + * /Volumes/catalog/schema/volume}). When set, short URIs are relative to it: {@code + * name:///input} → {@code /Volumes/…/volume/input}. When blank, URIs must use full {@code + * /Volumes/…} or {@code /Workspace/…} paths. + */ + @GuiWidgetElement( + id = "10020-default-base-path", + parentId = PARENT, + type = GuiElementType.TEXT, + label = "i18n::DatabricksVfsConnection.DefaultBasePath.Label", + toolTip = "i18n::DatabricksVfsConnection.DefaultBasePath.Tooltip") + @HopMetadataProperty + private String defaultBasePath; + + public DatabricksVfsConnection() { + // defaults + } +} diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/metadata/DatabricksVfsConnectionEditor.java b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/metadata/DatabricksVfsConnectionEditor.java new file mode 100644 index 00000000000..faa824caa62 --- /dev/null +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/metadata/DatabricksVfsConnectionEditor.java @@ -0,0 +1,191 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.vfs.databricks.metadata; + +import org.apache.commons.lang3.StringUtils; +import org.apache.hop.core.Const; +import org.apache.hop.core.gui.plugin.GuiPlugin; +import org.apache.hop.databricks.client.DatabricksJobsClient; +import org.apache.hop.databricks.client.RestDatabricksJobsClient; +import org.apache.hop.databricks.metadata.DatabricksConnection; +import org.apache.hop.i18n.BaseMessages; +import org.apache.hop.metadata.api.IHopMetadataProvider; +import org.apache.hop.ui.core.PropsUi; +import org.apache.hop.ui.core.dialog.ErrorDialog; +import org.apache.hop.ui.core.dialog.MessageBox; +import org.apache.hop.ui.core.gui.GuiCompositeWidgets; +import org.apache.hop.ui.core.gui.GuiCompositeWidgetsAdapter; +import org.apache.hop.ui.core.metadata.MetadataEditor; +import org.apache.hop.ui.core.metadata.MetadataManager; +import org.apache.hop.ui.hopgui.HopGui; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +@GuiPlugin(description = "Editor for Databricks Volumes / Workspace VFS metadata") +public class DatabricksVfsConnectionEditor extends MetadataEditor { + + private static final Class PKG = DatabricksVfsConnection.class; + + public static final String GUI_WIDGETS_PARENT_ID = + "DatabricksVfsConnectionEditor-GuiWidgetsParent"; + + private Text wName; + private Composite wWidgetsComposite; + private GuiCompositeWidgets guiCompositeWidgets; + + public DatabricksVfsConnectionEditor( + HopGui hopGui, + MetadataManager manager, + DatabricksVfsConnection metadata) { + super(hopGui, manager, metadata); + } + + @Override + public void createControl(Composite parent) { + PropsUi props = PropsUi.getInstance(); + int middle = props.getMiddlePct(); + int margin = PropsUi.getMargin() + 2; + + Label wIcon = new Label(parent, SWT.RIGHT); + wIcon.setImage(getImage()); + FormData fdlIcon = new FormData(); + fdlIcon.top = new FormAttachment(0, 0); + fdlIcon.right = new FormAttachment(100, 0); + wIcon.setLayoutData(fdlIcon); + PropsUi.setLook(wIcon); + + Label wlName = new Label(parent, SWT.RIGHT); + PropsUi.setLook(wlName); + wlName.setText(BaseMessages.getString(PKG, "DatabricksVfsConnection.Name.Label")); + FormData fdlName = new FormData(); + fdlName.top = new FormAttachment(0, margin); + fdlName.left = new FormAttachment(0, 0); + fdlName.right = new FormAttachment(middle, -margin); + wlName.setLayoutData(fdlName); + wName = new Text(parent, SWT.SINGLE | SWT.LEFT | SWT.BORDER); + PropsUi.setLook(wName); + FormData fdName = new FormData(); + fdName.top = new FormAttachment(wlName, 0, SWT.CENTER); + fdName.left = new FormAttachment(middle, 0); + fdName.right = new FormAttachment(wIcon, -margin); + wName.setLayoutData(fdName); + Control lastControl = wName; + + wWidgetsComposite = new Composite(parent, SWT.NONE); + PropsUi.setLook(wWidgetsComposite); + wWidgetsComposite.setLayout(new FormLayout()); + FormData fdWidgetsComposite = new FormData(); + fdWidgetsComposite.top = new FormAttachment(lastControl, margin); + fdWidgetsComposite.left = new FormAttachment(0, 0); + fdWidgetsComposite.right = new FormAttachment(100, 0); + fdWidgetsComposite.bottom = new FormAttachment(100, -margin * 4); + wWidgetsComposite.setLayoutData(fdWidgetsComposite); + + guiCompositeWidgets = new GuiCompositeWidgets(manager.getVariables()); + guiCompositeWidgets.createCompositeWidgets( + metadata, null, wWidgetsComposite, GUI_WIDGETS_PARENT_ID, lastControl); + guiCompositeWidgets.setWidgetsListener( + new GuiCompositeWidgetsAdapter() { + @Override + public void widgetModified( + GuiCompositeWidgets compositeWidgets, Control changedWidget, String widgetId) { + setChanged(); + } + }); + + Button wTest = new Button(parent, SWT.PUSH); + PropsUi.setLook(wTest); + wTest.setText(BaseMessages.getString(PKG, "DatabricksVfsConnection.Test.Label")); + FormData fdTest = new FormData(); + fdTest.bottom = new FormAttachment(100, 0); + fdTest.left = new FormAttachment(middle, 0); + wTest.setLayoutData(fdTest); + wTest.addListener(SWT.Selection, e -> testConnection()); + + setWidgetsContent(); + resetChanged(); + wName.addModifyListener(e -> setChanged()); + } + + private void testConnection() { + try { + getWidgetsContent(getMetadata()); + DatabricksVfsConnection vfs = getMetadata(); + if (StringUtils.isBlank(vfs.getDatabricksConnectionName())) { + throw new IllegalStateException( + BaseMessages.getString(PKG, "DatabricksVfsConnection.Test.MissingConnection")); + } + IHopMetadataProvider provider = manager.getMetadataProvider(); + DatabricksConnection conn = + provider + .getSerializer(DatabricksConnection.class) + .load(vfs.getDatabricksConnectionName()); + if (conn == null) { + throw new IllegalStateException( + BaseMessages.getString( + PKG, + "DatabricksVfsConnection.Test.ConnectionNotFound", + vfs.getDatabricksConnectionName())); + } + try (DatabricksJobsClient client = + RestDatabricksJobsClient.create(conn, manager.getVariables())) { + String who = client.testConnection(); + MessageBox box = + new MessageBox(HopGui.getInstance().getShell(), SWT.OK | SWT.ICON_INFORMATION); + box.setText(BaseMessages.getString(PKG, "DatabricksVfsConnection.Test.Success.Title")); + box.setMessage( + BaseMessages.getString(PKG, "DatabricksVfsConnection.Test.Success.Message", who)); + box.open(); + } + } catch (Exception e) { + new ErrorDialog( + HopGui.getInstance().getShell(), + BaseMessages.getString(PKG, "DatabricksVfsConnection.Test.Error.Title"), + BaseMessages.getString(PKG, "DatabricksVfsConnection.Test.Error.Message"), + e); + } + } + + @Override + public void setWidgetsContent() { + DatabricksVfsConnection meta = this.getMetadata(); + wName.setText(Const.NVL(meta.getName(), "")); + guiCompositeWidgets.setWidgetsContents(metadata, wWidgetsComposite, GUI_WIDGETS_PARENT_ID); + } + + @Override + public void getWidgetsContent(DatabricksVfsConnection meta) { + meta.setName(wName.getText()); + guiCompositeWidgets.getWidgetsContents(metadata, GUI_WIDGETS_PARENT_ID); + } + + @Override + public boolean setFocus() { + if (wName == null || wName.isDisposed()) { + return false; + } + return wName.setFocus(); + } +} diff --git a/plugins/tech/databricks/src/main/resources/org/apache/hop/vfs/databricks/metadata/messages/messages_en_US.properties b/plugins/tech/databricks/src/main/resources/org/apache/hop/vfs/databricks/metadata/messages/messages_en_US.properties new file mode 100644 index 00000000000..83bc0802405 --- /dev/null +++ b/plugins/tech/databricks/src/main/resources/org/apache/hop/vfs/databricks/metadata/messages/messages_en_US.properties @@ -0,0 +1,33 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +DatabricksVfsConnection.Name=Databricks VFS Connection +DatabricksVfsConnection.Description=Named VFS scheme for Unity Catalog Volumes and Workspace files (Files API) +DatabricksVfsConnection.Name.Label=Name (URI scheme) +DatabricksVfsConnection.Description.Label=Description +DatabricksVfsConnection.Description.Tooltip=Optional free-text description +DatabricksVfsConnection.Connection.Label=Databricks Connection +DatabricksVfsConnection.Connection.Tooltip=Jobs/workspace connection that provides host and personal access token +DatabricksVfsConnection.DefaultBasePath.Label=Root path +DatabricksVfsConnection.DefaultBasePath.Tooltip=Absolute UC Volume or Workspace path that is the root of this scheme. Shortens URIs: name:///input maps to /input. Leave empty to require full /Volumes/… or /Workspace/… paths in every URI. +DatabricksVfsConnection.Test.Label=Test connection +DatabricksVfsConnection.Test.Success.Title=Connection OK +DatabricksVfsConnection.Test.Success.Message=Referenced Databricks connection works as: {0} +DatabricksVfsConnection.Test.Error.Title=Connection failed +DatabricksVfsConnection.Test.Error.Message=Unable to validate the referenced Databricks connection +DatabricksVfsConnection.Test.MissingConnection=Select a Databricks Connection first +DatabricksVfsConnection.Test.ConnectionNotFound=Databricks Connection not found: {0} diff --git a/plugins/tech/databricks/src/test/java/org/apache/hop/databricks/client/RestDatabricksFilesClientTest.java b/plugins/tech/databricks/src/test/java/org/apache/hop/databricks/client/RestDatabricksFilesClientTest.java new file mode 100644 index 00000000000..d676d1d7879 --- /dev/null +++ b/plugins/tech/databricks/src/test/java/org/apache/hop/databricks/client/RestDatabricksFilesClientTest.java @@ -0,0 +1,246 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.databricks.client; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.github.tomakehurst.wiremock.WireMockServer; +import com.github.tomakehurst.wiremock.client.WireMock; +import com.github.tomakehurst.wiremock.core.WireMockConfiguration; +import java.io.InputStream; +import java.net.http.HttpClient; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import org.apache.hop.core.exception.HopException; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class RestDatabricksFilesClientTest { + + private WireMockServer server; + private RestDatabricksFilesClient client; + + @BeforeEach + void setUp() { + server = new WireMockServer(WireMockConfiguration.wireMockConfig().dynamicPort()); + server.start(); + WireMock.configureFor("localhost", server.port()); + client = + RestDatabricksFilesClient.createForTest( + "http://localhost:" + server.port(), "test-token", HttpClient.newHttpClient()); + } + + @AfterEach + void tearDown() { + if (server != null) { + server.stop(); + } + } + + @Test + void isFilesApiPathDetectsVolumesAndWorkspace() { + assertTrue(RestDatabricksFilesClient.isFilesApiPath("/Volumes/c/s/v/file.jar")); + assertTrue(RestDatabricksFilesClient.isFilesApiPath("/Workspace/Users/a@b.com/x")); + assertFalse(RestDatabricksFilesClient.isFilesApiPath("/FileStore/hop/x.jar")); + } + + @Test + void requireFilesApiPathRejectsClassicDbfs() { + HopException ex = + assertThrows( + HopException.class, + () -> RestDatabricksFilesClient.requireFilesApiPath("/FileStore/hop/x.jar")); + assertTrue(ex.getMessage().contains("Files API")); + } + + @Test + void listDirectoryPaginates() throws Exception { + server.stubFor( + WireMock.get(WireMock.urlEqualTo("/api/2.0/fs/directories/Volumes/apache-hop/default/jars")) + .willReturn( + WireMock.aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/json") + .withBody( + """ + {"contents":[ + {"name":"a.jar","path":"/Volumes/apache-hop/default/jars/a.jar","is_directory":false,"file_size":10,"last_modified":1000} + ],"next_page_token":"page2"} + """))); + server.stubFor( + WireMock.get( + WireMock.urlEqualTo( + "/api/2.0/fs/directories/Volumes/apache-hop/default/jars?page_token=page2")) + .willReturn( + WireMock.aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/json") + .withBody( + """ + {"contents":[ + {"name":"sub","path":"/Volumes/apache-hop/default/jars/sub","is_directory":true,"last_modified":2000} + ]} + """))); + + List entries = client.listDirectory("/Volumes/apache-hop/default/jars"); + assertEquals(2, entries.size()); + assertEquals("a.jar", entries.get(0).name()); + assertFalse(entries.get(0).directory()); + assertEquals(10L, entries.get(0).sizeBytes()); + assertEquals("sub", entries.get(1).name()); + assertTrue(entries.get(1).directory()); + } + + @Test + void createDirectoryPutsWithTrailingSlash() throws Exception { + server.stubFor( + WireMock.put( + WireMock.urlEqualTo( + "/api/2.0/fs/directories/Volumes/apache-hop/default/jars/newdir/")) + .withHeader("Authorization", WireMock.equalTo("Bearer test-token")) + .willReturn(WireMock.aResponse().withStatus(204))); + + client.createDirectory("/Volumes/apache-hop/default/jars/newdir"); + + server.verify( + WireMock.putRequestedFor( + WireMock.urlEqualTo( + "/api/2.0/fs/directories/Volumes/apache-hop/default/jars/newdir/"))); + } + + @Test + void deleteFileUsesFilesApi() throws Exception { + server.stubFor( + WireMock.delete( + WireMock.urlEqualTo("/api/2.0/fs/files/Volumes/apache-hop/default/jars/old.jar")) + .willReturn(WireMock.aResponse().withStatus(204))); + + client.deleteFile("/Volumes/apache-hop/default/jars/old.jar"); + + server.verify( + WireMock.deleteRequestedFor( + WireMock.urlEqualTo("/api/2.0/fs/files/Volumes/apache-hop/default/jars/old.jar"))); + } + + @Test + void deleteDirectoryDoesNotSendRecursiveQueryParam() throws Exception { + // Empty directory: no list children needed beyond empty contents + server.stubFor( + WireMock.get( + WireMock.urlEqualTo("/api/2.0/fs/directories/Volumes/apache-hop/default/jars/tmp")) + .willReturn( + WireMock.aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/json") + .withBody("{\"contents\":[]}"))); + server.stubFor( + WireMock.delete( + WireMock.urlEqualTo("/api/2.0/fs/directories/Volumes/apache-hop/default/jars/tmp/")) + .willReturn(WireMock.aResponse().withStatus(204))); + + client.deleteDirectory("/Volumes/apache-hop/default/jars/tmp", true); + + server.verify( + WireMock.deleteRequestedFor( + WireMock.urlEqualTo("/api/2.0/fs/directories/Volumes/apache-hop/default/jars/tmp/"))); + // API rejects ?recursive=… + server.verify( + 0, WireMock.deleteRequestedFor(WireMock.urlMatching(".*/fs/directories/.*recursive.*"))); + } + + @Test + void deleteDirectoryRecursiveDeletesChildrenThenDir() throws Exception { + server.stubFor( + WireMock.get( + WireMock.urlEqualTo("/api/2.0/fs/directories/Volumes/apache-hop/default/jars/tmp")) + .willReturn( + WireMock.aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/json") + .withBody( + """ + {"contents":[ + {"name":"f.txt","path":"/Volumes/apache-hop/default/jars/tmp/f.txt","is_directory":false,"file_size":1} + ]} + """))); + server.stubFor( + WireMock.delete( + WireMock.urlEqualTo("/api/2.0/fs/files/Volumes/apache-hop/default/jars/tmp/f.txt")) + .willReturn(WireMock.aResponse().withStatus(204))); + server.stubFor( + WireMock.delete( + WireMock.urlEqualTo("/api/2.0/fs/directories/Volumes/apache-hop/default/jars/tmp/")) + .willReturn(WireMock.aResponse().withStatus(204))); + + client.deleteDirectory("/Volumes/apache-hop/default/jars/tmp", true); + + server.verify( + WireMock.deleteRequestedFor( + WireMock.urlEqualTo("/api/2.0/fs/files/Volumes/apache-hop/default/jars/tmp/f.txt"))); + server.verify( + WireMock.deleteRequestedFor( + WireMock.urlEqualTo("/api/2.0/fs/directories/Volumes/apache-hop/default/jars/tmp/"))); + } + + @Test + void openInputStreamDownloadsBytes() throws Exception { + byte[] payload = "hello-volume".getBytes(StandardCharsets.UTF_8); + server.stubFor( + WireMock.get( + WireMock.urlEqualTo("/api/2.0/fs/files/Volumes/apache-hop/default/jars/hello.txt")) + .willReturn( + WireMock.aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/octet-stream") + .withBody(payload))); + + try (InputStream in = client.openInputStream("/Volumes/apache-hop/default/jars/hello.txt")) { + assertEquals("hello-volume", new String(in.readAllBytes(), StandardCharsets.UTF_8)); + } + } + + @Test + void uploadUsesPutOverwrite() throws Exception { + Path temp = Files.createTempFile("hop-dbx-files-", ".bin"); + try { + byte[] payload = "payload".getBytes(StandardCharsets.UTF_8); + Files.write(temp, payload); + server.stubFor( + WireMock.put( + WireMock.urlEqualTo( + "/api/2.0/fs/files/Volumes/apache-hop/default/jars/x.bin?overwrite=true")) + .withRequestBody(WireMock.binaryEqualTo(payload)) + .willReturn(WireMock.aResponse().withStatus(204))); + + client.upload(temp, "/Volumes/apache-hop/default/jars/x.bin"); + + server.verify( + WireMock.putRequestedFor( + WireMock.urlEqualTo( + "/api/2.0/fs/files/Volumes/apache-hop/default/jars/x.bin?overwrite=true"))); + } finally { + Files.deleteIfExists(temp); + } + } +} diff --git a/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksFileObjectTest.java b/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksFileObjectTest.java new file mode 100644 index 00000000000..f0a700101db --- /dev/null +++ b/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksFileObjectTest.java @@ -0,0 +1,256 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.vfs.databricks; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.github.tomakehurst.wiremock.WireMockServer; +import com.github.tomakehurst.wiremock.client.WireMock; +import com.github.tomakehurst.wiremock.core.WireMockConfiguration; +import java.io.OutputStream; +import java.net.http.HttpClient; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.Collection; +import org.apache.commons.vfs2.Capability; +import org.apache.commons.vfs2.FileName; +import org.apache.commons.vfs2.FileObject; +import org.apache.commons.vfs2.FileSystem; +import org.apache.commons.vfs2.FileSystemException; +import org.apache.commons.vfs2.FileSystemOptions; +import org.apache.commons.vfs2.FileType; +import org.apache.commons.vfs2.impl.DefaultFileSystemManager; +import org.apache.commons.vfs2.provider.AbstractOriginatingFileProvider; +import org.apache.hop.databricks.client.RestDatabricksFilesClient; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class DatabricksFileObjectTest { + + private WireMockServer server; + private RestDatabricksFilesClient client; + private DefaultFileSystemManager fsm; + private DefaultFileSystemManager rootedFsm; + + @BeforeEach + void setUp() throws Exception { + server = new WireMockServer(WireMockConfiguration.wireMockConfig().dynamicPort()); + server.start(); + WireMock.configureFor("localhost", server.port()); + client = + RestDatabricksFilesClient.createForTest( + "http://localhost:" + server.port(), "test-token", HttpClient.newHttpClient()); + + fsm = new DefaultFileSystemManager(); + fsm.addProvider("testdbx", new TestProvider(client, "")); + fsm.init(); + + rootedFsm = new DefaultFileSystemManager(); + rootedFsm.addProvider("dbvol", new TestProvider(client, "/Volumes/apache-hop/default/testing")); + rootedFsm.init(); + } + + @AfterEach + void tearDown() { + if (fsm != null) { + fsm.close(); + } + if (rootedFsm != null) { + rootedFsm.close(); + } + if (server != null) { + server.stop(); + } + } + + private FileObject resolve(String path) throws Exception { + return fsm.resolveFile("testdbx://" + path); + } + + private FileObject resolveRooted(String path) throws Exception { + return rootedFsm.resolveFile("dbvol://" + path); + } + + @Test + void listDirectoryReturnsChildren() throws Exception { + server.stubFor( + WireMock.head(WireMock.urlEqualTo("/api/2.0/fs/files/Volumes/c/s/v")) + .willReturn(WireMock.aResponse().withStatus(404))); + server.stubFor( + WireMock.get(WireMock.urlEqualTo("/api/2.0/fs/files/Volumes/c/s/v")) + .willReturn(WireMock.aResponse().withStatus(404))); + server.stubFor( + WireMock.get(WireMock.urlEqualTo("/api/2.0/fs/directories/Volumes/c/s/v")) + .willReturn( + WireMock.aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/json") + .withBody( + """ + {"contents":[ + {"name":"data.csv","path":"/Volumes/c/s/v/data.csv","is_directory":false,"file_size":42,"last_modified":1}, + {"name":"subdir","path":"/Volumes/c/s/v/subdir","is_directory":true,"last_modified":2} + ]} + """))); + + FileObject dir = resolve("/Volumes/c/s/v"); + assertEquals(FileType.FOLDER, dir.getType()); + String[] names = + Arrays.stream(dir.getChildren()) + .map(fo -> fo.getName().getBaseName()) + .sorted() + .toArray(String[]::new); + assertArrayEquals(new String[] {"data.csv", "subdir"}, names); + } + + @Test + void writeThenReadRoundTrip() throws Exception { + byte[] payload = "vfs-round-trip".getBytes(StandardCharsets.UTF_8); + server.stubFor( + WireMock.head(WireMock.urlEqualTo("/api/2.0/fs/files/Volumes/c/s/v/out.txt")) + .willReturn(WireMock.aResponse().withStatus(404))); + server.stubFor( + WireMock.get(WireMock.urlEqualTo("/api/2.0/fs/files/Volumes/c/s/v/out.txt")) + .willReturn(WireMock.aResponse().withStatus(404))); + server.stubFor( + WireMock.get(WireMock.urlEqualTo("/api/2.0/fs/directories/Volumes/c/s/v/out.txt")) + .willReturn(WireMock.aResponse().withStatus(404))); + server.stubFor( + WireMock.put(WireMock.urlEqualTo("/api/2.0/fs/files/Volumes/c/s/v/out.txt?overwrite=true")) + .withRequestBody(WireMock.binaryEqualTo(payload)) + .willReturn(WireMock.aResponse().withStatus(204))); + + FileObject file = resolve("/Volumes/c/s/v/out.txt"); + try (OutputStream out = file.getContent().getOutputStream()) { + out.write(payload); + } + + server.stubFor( + WireMock.head(WireMock.urlEqualTo("/api/2.0/fs/files/Volumes/c/s/v/out.txt")) + .willReturn( + WireMock.aResponse() + .withStatus(200) + .withHeader("Content-Length", String.valueOf(payload.length)))); + server.stubFor( + WireMock.get(WireMock.urlEqualTo("/api/2.0/fs/files/Volumes/c/s/v/out.txt")) + .willReturn( + WireMock.aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/octet-stream") + .withBody(payload))); + + fsm.getFilesCache().clear(file.getFileSystem()); + FileObject written = resolve("/Volumes/c/s/v/out.txt"); + assertEquals(FileType.FILE, written.getType()); + try (var in = written.getContent().getInputStream()) { + assertEquals("vfs-round-trip", new String(in.readAllBytes(), StandardCharsets.UTF_8)); + } + } + + @Test + void createFolderUnderRootPathUsesJoinedWorkspacePath() throws Exception { + server.stubFor( + WireMock.get( + WireMock.urlEqualTo("/api/2.0/fs/directories/Volumes/apache-hop/default/testing")) + .willReturn( + WireMock.aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/json") + .withBody("{\"contents\":[]}"))); + server.stubFor( + WireMock.put( + WireMock.urlEqualTo( + "/api/2.0/fs/directories/Volumes/apache-hop/default/testing/input/")) + .withHeader("Authorization", WireMock.equalTo("Bearer test-token")) + .willReturn(WireMock.aResponse().withStatus(204))); + + FileObject folder = resolveRooted("/input"); + folder.createFolder(); + + server.verify( + WireMock.putRequestedFor( + WireMock.urlEqualTo( + "/api/2.0/fs/directories/Volumes/apache-hop/default/testing/input/"))); + assertTrue(folder.exists()); + } + + @Test + void renameFileCopiesThenDeletesViaFilesApi() throws Exception { + byte[] payload = "rename-me".getBytes(StandardCharsets.UTF_8); + String src = "/Volumes/apache-hop/default/testing/input/a.txt"; + String dst = "/Volumes/apache-hop/default/testing/processing/a.txt"; + + server.stubFor( + WireMock.head(WireMock.urlEqualTo("/api/2.0/fs/files" + src)) + .willReturn( + WireMock.aResponse() + .withStatus(200) + .withHeader("Content-Length", String.valueOf(payload.length)))); + server.stubFor( + WireMock.get(WireMock.urlEqualTo("/api/2.0/fs/files" + src)) + .willReturn( + WireMock.aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/octet-stream") + .withBody(payload))); + server.stubFor( + WireMock.put(WireMock.urlEqualTo("/api/2.0/fs/files" + dst + "?overwrite=true")) + .withRequestBody(WireMock.binaryEqualTo(payload)) + .willReturn(WireMock.aResponse().withStatus(204))); + server.stubFor( + WireMock.delete(WireMock.urlEqualTo("/api/2.0/fs/files" + src)) + .willReturn(WireMock.aResponse().withStatus(204))); + + FileObject source = resolveRooted("/input/a.txt"); + FileObject target = resolveRooted("/processing/a.txt"); + source.moveTo(target); + + server.verify( + WireMock.putRequestedFor( + WireMock.urlEqualTo("/api/2.0/fs/files" + dst + "?overwrite=true"))); + server.verify(WireMock.deleteRequestedFor(WireMock.urlEqualTo("/api/2.0/fs/files" + src))); + } + + /** Provider that injects a pre-built Files client and optional scheme root. */ + private static final class TestProvider extends AbstractOriginatingFileProvider { + private final RestDatabricksFilesClient client; + private final String rootPath; + + TestProvider(RestDatabricksFilesClient client, String rootPath) { + this.client = client; + this.rootPath = rootPath == null ? "" : rootPath; + setFileNameParser(DatabricksFileNameParser.getInstance()); + } + + @Override + public Collection getCapabilities() { + return DatabricksFileProvider.CAPABILITIES; + } + + @Override + protected FileSystem doCreateFileSystem(FileName rootName, FileSystemOptions fileSystemOptions) + throws FileSystemException { + FileSystemOptions opts = + fileSystemOptions != null ? fileSystemOptions : new FileSystemOptions(); + return new DatabricksFileSystem(rootName, client, opts, rootPath); + } + } +} diff --git a/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksPathResolverTest.java b/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksPathResolverTest.java new file mode 100644 index 00000000000..a7981435fc3 --- /dev/null +++ b/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksPathResolverTest.java @@ -0,0 +1,70 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.vfs.databricks; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.apache.hop.core.exception.HopException; +import org.junit.jupiter.api.Test; + +class DatabricksPathResolverTest { + + @Test + void normalizeRootPathStripsSlashAndValidates() throws Exception { + assertEquals( + "/Volumes/apache-hop/default/testing", + DatabricksPathResolver.normalizeRootPath("/Volumes/apache-hop/default/testing/")); + assertEquals("/Volumes/c/s/v", DatabricksPathResolver.normalizeRootPath("dbfs:/Volumes/c/s/v")); + } + + @Test + void normalizeRootPathRejectsNonFilesApi() { + HopException ex = + assertThrows( + HopException.class, () -> DatabricksPathResolver.normalizeRootPath("/FileStore/x")); + assertTrue(ex.getMessage().contains("/Volumes")); + } + + @Test + void toWorkspacePathWithoutRootKeepsLogical() { + assertEquals("/input", DatabricksPathResolver.toWorkspacePath("/input", "")); + assertEquals( + "/Volumes/c/s/v/x", DatabricksPathResolver.toWorkspacePath("/Volumes/c/s/v/x", null)); + } + + @Test + void toWorkspacePathWithRootJoinsRelative() { + String root = "/Volumes/apache-hop/default/testing"; + assertEquals(root, DatabricksPathResolver.toWorkspacePath("/", root)); + assertEquals(root, DatabricksPathResolver.toWorkspacePath("", root)); + assertEquals(root + "/input", DatabricksPathResolver.toWorkspacePath("/input", root)); + assertEquals( + root + "/input/customers-1M.txt", + DatabricksPathResolver.toWorkspacePath("/input/customers-1M.txt", root)); + } + + @Test + void toWorkspacePathWithRootAllowsAbsoluteEscape() { + String root = "/Volumes/apache-hop/default/testing"; + assertEquals( + "/Volumes/other/default/vol/file", + DatabricksPathResolver.toWorkspacePath("/Volumes/other/default/vol/file", root)); + } +} diff --git a/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksVfsPluginTest.java b/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksVfsPluginTest.java new file mode 100644 index 00000000000..120d4192c31 --- /dev/null +++ b/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksVfsPluginTest.java @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.vfs.databricks; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Map; +import org.apache.commons.vfs2.provider.FileProvider; +import org.apache.hop.core.variables.Variables; +import org.apache.hop.vfs.databricks.metadata.DatabricksVfsConnection; +import org.junit.jupiter.api.Test; + +class DatabricksVfsPluginTest { + + @Test + void urlSchemesEmptyLikeMinio() { + DatabricksVfsPlugin plugin = new DatabricksVfsPlugin(); + assertEquals(0, plugin.getUrlSchemes().length); + } + + @Test + void getProviderReturnsDatabricksProvider() { + DatabricksVfsPlugin plugin = new DatabricksVfsPlugin(); + FileProvider provider = plugin.getProvider(); + assertNotNull(provider); + assertTrue(provider instanceof DatabricksFileProvider); + } + + @Test + void getProvidersSurvivesMissingMetadata() { + DatabricksVfsPlugin plugin = new DatabricksVfsPlugin(); + Map providers = plugin.getProviders(new Variables()); + assertNotNull(providers); + } + + @Test + void fileProviderAcceptsVfsConnection() { + DatabricksVfsConnection vfs = new DatabricksVfsConnection(); + vfs.setName("dbx-jars"); + vfs.setDatabricksConnectionName("prod-workspace"); + DatabricksFileProvider provider = new DatabricksFileProvider(new Variables(), vfs); + assertNotNull(provider); + assertTrue( + provider.getCapabilities().contains(org.apache.commons.vfs2.Capability.READ_CONTENT)); + } +} From 4018a2cbbe3ab0444c457f3c578f8ee9be4d364e Mon Sep 17 00:00:00 2001 From: mattcasters Date: Sun, 19 Jul 2026 16:45:01 +0200 Subject: [PATCH 2/4] issue #7567 : use Databricks logo for connection icon; drop unused SVGs Replace the simplified connection icon with the Databricks brand mark and remove unused job-run/job-wait/logo SVG duplicates. --- .../main/resources/databricks-connection.svg | 8 +++---- .../src/main/resources/databricks-job-run.svg | 21 ----------------- .../main/resources/databricks-job-wait.svg | 23 ------------------- .../src/main/resources/databricks-logo.svg | 11 --------- 4 files changed, 4 insertions(+), 59 deletions(-) delete mode 100644 plugins/tech/databricks/src/main/resources/databricks-job-run.svg delete mode 100644 plugins/tech/databricks/src/main/resources/databricks-job-wait.svg delete mode 100644 plugins/tech/databricks/src/main/resources/databricks-logo.svg diff --git a/plugins/tech/databricks/src/main/resources/databricks-connection.svg b/plugins/tech/databricks/src/main/resources/databricks-connection.svg index e9c86c7a1dc..198e679b1e9 100644 --- a/plugins/tech/databricks/src/main/resources/databricks-connection.svg +++ b/plugins/tech/databricks/src/main/resources/databricks-connection.svg @@ -16,8 +16,8 @@ limitations under the License. --> - - - - + diff --git a/plugins/tech/databricks/src/main/resources/databricks-job-run.svg b/plugins/tech/databricks/src/main/resources/databricks-job-run.svg deleted file mode 100644 index 5b74b5c3f70..00000000000 --- a/plugins/tech/databricks/src/main/resources/databricks-job-run.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/plugins/tech/databricks/src/main/resources/databricks-job-wait.svg b/plugins/tech/databricks/src/main/resources/databricks-job-wait.svg deleted file mode 100644 index fcf3d78b8c3..00000000000 --- a/plugins/tech/databricks/src/main/resources/databricks-job-wait.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - diff --git a/plugins/tech/databricks/src/main/resources/databricks-logo.svg b/plugins/tech/databricks/src/main/resources/databricks-logo.svg deleted file mode 100644 index 4928c857888..00000000000 --- a/plugins/tech/databricks/src/main/resources/databricks-logo.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - From fd0073e33db106378ae31c42945ae85e031e4a9d Mon Sep 17 00:00:00 2001 From: mattcasters Date: Sun, 19 Jul 2026 18:56:35 +0200 Subject: [PATCH 3/4] Issue #7567 : VFS support for Databricks Unity Catalog Volumes --- .../ROOT/pages/pipeline/spark/databricks.adoc | 6 ++ .../hop/execution/caching/CacheEntry.java | 25 ++++-- .../CachingFileExecutionInfoLocation.java | 12 +-- .../local/FileExecutionInfoLocation.java | 33 +++---- .../hop/ui/core/vfs/HopVfsFileDialog.java | 85 ++++++++++++------- .../base/BaseExplorerFileTypeHandler.java | 4 +- .../types/raw/RawExplorerFileTypeHandler.java | 15 +++- .../text/BaseTextExplorerFileTypeHandler.java | 18 ++-- 8 files changed, 130 insertions(+), 68 deletions(-) diff --git a/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/databricks.adoc b/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/databricks.adoc index c2de6859485..090595bbc60 100644 --- a/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/databricks.adoc +++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/databricks.adoc @@ -182,6 +182,12 @@ From Hop GUI and local transforms you can use a xref:metadata-types/databricks-v That is **Hop-side I/O only** — it does not replace absolute `/Volumes/…` paths on the cluster or in Jobs API library URIs. See xref:vfs/databricks-vfs.adoc[Databricks Volumes / Workspace VFS]. +==== Execution information on a UC Volume (optional) + +You can point a **Caching File** (or File) xref:metadata-types/execution-information-location.adoc[execution information location] at a Databricks VFS URI, for example `db-volume:///executions`, so the MainSpark **driver** writes Hop execution JSON/samples to a Volume via the Files API and the laptop GUI can open the same location remotely. + +This is suitable for **small** execution metadata only (same Files API limits as other VFS use). Prefer the **Caching File** location with a multi-second persistence delay. The job package must include the VFS connection, Databricks Connection (PAT via variables), and location metadata; native Spark Dataset paths still use `/Volumes/…` or cloud URIs, not the VFS scheme. + == Compute modes (Deploy & run) The **Cluster / compute** field accepts one of: diff --git a/engine/src/main/java/org/apache/hop/execution/caching/CacheEntry.java b/engine/src/main/java/org/apache/hop/execution/caching/CacheEntry.java index 6fa9d75d86e..43b792e30b7 100644 --- a/engine/src/main/java/org/apache/hop/execution/caching/CacheEntry.java +++ b/engine/src/main/java/org/apache/hop/execution/caching/CacheEntry.java @@ -34,6 +34,7 @@ import org.apache.commons.vfs2.FileObject; import org.apache.hop.core.Const; import org.apache.hop.core.exception.HopException; +import org.apache.hop.core.variables.IVariables; import org.apache.hop.core.vfs.HopVfs; import org.apache.hop.execution.Execution; import org.apache.hop.execution.ExecutionData; @@ -98,13 +99,23 @@ public CacheEntry() { * @throws HopException In case there was an error writing. */ public void writeToDisk(String rootFolder) throws HopException { + writeToDisk(rootFolder, null); + } + + /** + * Write this cache entry to a file under {@code rootFolder}. + * + * @param variables required for named VFS schemes (e.g. Databricks/MinIO connection schemes) + */ + public void writeToDisk(String rootFolder, IVariables variables) throws HopException { String targetFilename = calculateFilename(rootFolder); String filename = targetFilename + ".new"; // Use Hop VFS (not java.io.FileOutputStream): rootFolder is often a VFS URI such as // file:///data/hop-data/executions when resolved from ${HOP_DATA}. FileOutputStream treats // "file://…" as a literal path and fails with FileNotFoundException even when the folder - // was created successfully via VFS. - try (OutputStream os = HopVfs.getOutputStream(filename, false)) { + // was created successfully via VFS. Named schemes (db-volume://) need variables so providers + // load from project metadata. + try (OutputStream os = HopVfs.getOutputStream(filename, false, variables)) { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.writeValue(os, this); } catch (Exception e) { @@ -113,11 +124,11 @@ public void writeToDisk(String rootFolder) throws HopException { // Now delete the old file and rename the new one. // try { - FileObject targetFileObject = HopVfs.getFileObject(targetFilename); + FileObject targetFileObject = HopVfs.getFileObject(targetFilename, variables); if (targetFileObject.exists()) { targetFileObject.delete(); } - FileObject fileObject = HopVfs.getFileObject(filename); + FileObject fileObject = HopVfs.getFileObject(filename, variables); fileObject.moveTo(targetFileObject); } catch (Exception e) { throw new HopException( @@ -130,9 +141,13 @@ public void writeToDisk(String rootFolder) throws HopException { } public void deleteFromDisk(String rootFolder) throws HopException { + deleteFromDisk(rootFolder, null); + } + + public void deleteFromDisk(String rootFolder, IVariables variables) throws HopException { String targetFilename = calculateFilename(rootFolder); try { - FileObject fileObject = HopVfs.getFileObject(targetFilename); + FileObject fileObject = HopVfs.getFileObject(targetFilename, variables); fileObject.delete(); } catch (Exception e) { throw new HopException( diff --git a/engine/src/main/java/org/apache/hop/execution/caching/CachingFileExecutionInfoLocation.java b/engine/src/main/java/org/apache/hop/execution/caching/CachingFileExecutionInfoLocation.java index 645e0245b51..a018ca726f8 100644 --- a/engine/src/main/java/org/apache/hop/execution/caching/CachingFileExecutionInfoLocation.java +++ b/engine/src/main/java/org/apache/hop/execution/caching/CachingFileExecutionInfoLocation.java @@ -126,7 +126,7 @@ public void initialize(IVariables variables, IHopMetadataProvider metadataProvid if (createParentFolder) { try { - FileObject folder = HopVfs.getFileObject(actualRootFolder); + FileObject folder = HopVfs.getFileObject(actualRootFolder, variables); if (!folder.exists()) { folder.createFolder(); } @@ -149,7 +149,7 @@ protected void persistCacheEntry(CacheEntry cacheEntry) throws HopException { mergeChildrenFromDisk(cacheEntry); // Before writing to disk, we calculate some summaries for convenience of other tools. cacheEntry.calculateSummary(); - cacheEntry.writeToDisk(actualRootFolder); + cacheEntry.writeToDisk(actualRootFolder, variables); // Remember when we last wrote to disk cacheEntry.setLastWritten(new Date()); } catch (Exception e) { @@ -193,7 +193,7 @@ private static void mergeMap(Map fromDisk, Map into) { @Override public void deleteCacheEntry(CacheEntry cacheEntry) throws HopException { try { - cacheEntry.deleteFromDisk(actualRootFolder); + cacheEntry.deleteFromDisk(actualRootFolder, variables); } catch (Exception e) { throw new HopException( "Error deleting caching file entry from folder " + actualRootFolder, e); @@ -205,11 +205,11 @@ protected synchronized CacheEntry loadCacheEntry(String executionId) throws HopE CacheEntry entry = new CacheEntry(); entry.setId(executionId); String filename = entry.calculateFilename(actualRootFolder); - if (!HopVfs.fileExists(filename)) { + if (!HopVfs.fileExists(filename, variables)) { return null; } ObjectMapper objectMapper = new ObjectMapper(); - return objectMapper.readValue(HopVfs.getInputStream(filename), CacheEntry.class); + return objectMapper.readValue(HopVfs.getInputStream(filename, variables), CacheEntry.class); } catch (Exception e) { throw new HopException( "Error loading execution information location file for executionId '" + executionId + "'", @@ -290,7 +290,7 @@ private String getIdFromFileName(FileObject file) { private FileObject[] getAllFileObjects(String actualRootFolder) throws FileSystemException, HopFileException { - FileObject folder = HopVfs.getFileObject(actualRootFolder); + FileObject folder = HopVfs.getFileObject(actualRootFolder, variables); return folder.findFiles( new AllFileSelector() { @Override diff --git a/engine/src/main/java/org/apache/hop/execution/local/FileExecutionInfoLocation.java b/engine/src/main/java/org/apache/hop/execution/local/FileExecutionInfoLocation.java index 71f1103c7d1..81d4106d7af 100644 --- a/engine/src/main/java/org/apache/hop/execution/local/FileExecutionInfoLocation.java +++ b/engine/src/main/java/org/apache/hop/execution/local/FileExecutionInfoLocation.java @@ -124,7 +124,7 @@ public void initialize(IVariables variables, IHopMetadataProvider metadataProvid if (createParentFolder && StringUtils.isNotEmpty(rootFolder)) { String actualRootFolder = variables.resolve(rootFolder); try { - FileObject folder = HopVfs.getFileObject(actualRootFolder); + FileObject folder = HopVfs.getFileObject(actualRootFolder, variables); if (!folder.exists()) { folder.createFolder(); } @@ -162,11 +162,12 @@ public synchronized void registerExecution(Execution execution) throws HopExcept // Create the folder(s) of the parent: // - HopVfs.getFileObject(registrationFileName).getParent().createFolder(); + HopVfs.getFileObject(registrationFileName, variables).getParent().createFolder(); // Write the execution information to disk... // - try (OutputStream outputStream = HopVfs.getOutputStream(registrationFileName, false)) { + try (OutputStream outputStream = + HopVfs.getOutputStream(registrationFileName, false, variables)) { ObjectMapper mapper = HopJson.newMapper(); mapper.writerWithDefaultPrettyPrinter().writeValue(outputStream, execution); } @@ -187,7 +188,7 @@ public synchronized boolean deleteExecution(String executionId) throws HopExcept // Delete the folder and everything in it // - FileObject executionFolder = HopVfs.getFileObject(getSubFolder(executionId)); + FileObject executionFolder = HopVfs.getFileObject(getSubFolder(executionId), variables); for (FileObject child : executionFolder.getChildren()) { child.delete(); } @@ -255,9 +256,9 @@ public synchronized void updateExecutionState(ExecutionState executionState) thr // Create the folder(s) of the parent if needed: // - HopVfs.getFileObject(updateFilename).getParent().createFolder(); + HopVfs.getFileObject(updateFilename, variables).getParent().createFolder(); - try (OutputStream outputStream = HopVfs.getOutputStream(updateFilename, false)) { + try (OutputStream outputStream = HopVfs.getOutputStream(updateFilename, false, variables)) { ObjectMapper mapper = HopJson.newMapper(); mapper.writerWithDefaultPrettyPrinter().writeValue(outputStream, executionState); } @@ -266,7 +267,7 @@ public synchronized void updateExecutionState(ExecutionState executionState) thr // if (saveLoggingToFile) { String logFilename = getLogFilename(executionState); - try (OutputStream outputStream = HopVfs.getOutputStream(logFilename, false)) { + try (OutputStream outputStream = HopVfs.getOutputStream(logFilename, false, variables)) { outputStream.write(loggingText.getBytes(StandardCharsets.UTF_8)); } } @@ -285,10 +286,10 @@ public synchronized ExecutionState getExecutionState(String executionId, boolean throws HopException { try { String updateFilename = getUpdateFilename(executionId); - if (!HopVfs.fileExists(updateFilename)) { + if (!HopVfs.fileExists(updateFilename, variables)) { return null; } - try (InputStream inputStream = HopVfs.getInputStream(updateFilename)) { + try (InputStream inputStream = HopVfs.getInputStream(updateFilename, variables)) { ObjectMapper mapper = HopJson.newMapper(); ExecutionState executionState = mapper.readValue(inputStream, ExecutionState.class); @@ -328,13 +329,13 @@ protected String getExecutionStateLoggingText(ExecutionState executionState, int try { // If there's a separate log file we'll read everything from there. String logFilename = getLogFilename(executionState); - if (HopVfs.fileExists(logFilename)) { + if (HopVfs.fileExists(logFilename, variables)) { // Only read the first part of the file, if a size limit was set. // try (Reader reader = new BufferedReader( new InputStreamReader( - HopVfs.getInputStream(logFilename), StandardCharsets.UTF_8))) { + HopVfs.getInputStream(logFilename, variables), StandardCharsets.UTF_8))) { StringBuilder log = new StringBuilder(); int c; while ((c = reader.read()) != -1 && (sizeLimit <= 0 || sizeLimit > log.length())) { @@ -373,7 +374,7 @@ public synchronized void registerData(ExecutionData data) throws HopException { // String dataFilename = getDataFilename(data); - try (OutputStream outputStream = HopVfs.getOutputStream(dataFilename, false)) { + try (OutputStream outputStream = HopVfs.getOutputStream(dataFilename, false, variables)) { ObjectMapper mapper = HopJson.newMapper(); mapper.writerWithDefaultPrettyPrinter().writeValue(outputStream, data); } @@ -392,7 +393,7 @@ public synchronized List getExecutionIds(boolean includeChildren, int li List subFolders = new ArrayList<>(); - FileObject folder = HopVfs.getFileObject(variables.resolve(rootFolder)); + FileObject folder = HopVfs.getFileObject(variables.resolve(rootFolder), variables); if (!folder.exists()) { return Collections.emptyList(); } @@ -459,7 +460,7 @@ public synchronized List findChildIds( // For a Beam pipeline to find child transforms. // String suffix = CONST_DATA_JSON; - FileObject folderObject = HopVfs.getFileObject(getSubFolder(parentExecutionId)); + FileObject folderObject = HopVfs.getFileObject(getSubFolder(parentExecutionId), variables); // In this folder we have a number of files ending with CONST_DATA_JSON for (FileObject child : folderObject.getChildren()) { @@ -489,7 +490,7 @@ public synchronized Execution getExecution(String executionId) throws HopExcepti try { // Look in the pipeline executions // - try (FileObject folder = HopVfs.getFileObject(getSubFolder(executionId))) { + try (FileObject folder = HopVfs.getFileObject(getSubFolder(executionId), variables)) { if (folder == null || !folder.exists()) { // No Execution info to be found return null; @@ -587,7 +588,7 @@ public synchronized String findParentId(String childId) throws HopException { public synchronized ExecutionData getExecutionData(String parentExecutionId, String executionId) throws HopException { try { - try (FileObject folder = HopVfs.getFileObject(getSubFolder(parentExecutionId))) { + try (FileObject folder = HopVfs.getFileObject(getSubFolder(parentExecutionId), variables)) { if (!folder.exists()) { return null; } diff --git a/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java b/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java index 31646d696ff..76cd073df0e 100644 --- a/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java +++ b/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java @@ -985,40 +985,30 @@ private String getTreeItemPath(TreeItem item) { private void populateFolder(FileObject folder, TreeItem folderItem) throws FileSystemException { FileObject[] children = folder.getChildren(); + if (children == null || children.length == 0) { + return; + } + // Comparator must define a total order (TimSort). Never treat unequal FileObjects as equal + // when metadata fails — that used to return 0 from catch and caused: + // IllegalArgumentException: Comparison method violates its general contract! Arrays.sort( children, (child1, child2) -> { - try { - int cmp; - switch (sortIndex) { - case 0: - String name1 = child1.getName().getBaseName(); - String name2 = child2.getName().getBaseName(); - cmp = name1.compareToIgnoreCase(name2); - break; - case 1: - long time1 = child1.getContent().getLastModifiedTime(); - long time2 = child2.getContent().getLastModifiedTime(); - cmp = Long.compare(time1, time2); - break; - case 2: - long size1 = child1.getContent().getSize(); - long size2 = child2.getContent().getSize(); - cmp = Long.compare(size1, size2); - break; - - default: - cmp = 0; - } - if (ascending) { - return -cmp; - } else { - return cmp; - } - } catch (Exception e) { - return 0; + int cmp = + switch (sortIndex) { + case 1 -> Long.compare(safeLastModified(child1), safeLastModified(child2)); + case 2 -> Long.compare(safeSize(child1), safeSize(child2)); + default -> compareBaseName(child1, child2); + }; + if (cmp == 0) { + cmp = compareBaseName(child1, child2); } + if (cmp == 0) { + cmp = compareUri(child1, child2); + } + // Preserve existing UI: ascending flag is inverted relative to natural order + return ascending ? -cmp : cmp; }); // First the child folders @@ -1088,6 +1078,43 @@ private void populateFolder(FileObject folder, TreeItem folderItem) throws FileS } } + private static int compareBaseName(FileObject child1, FileObject child2) { + try { + String name1 = child1.getName().getBaseName(); + String name2 = child2.getName().getBaseName(); + return name1.compareToIgnoreCase(name2); + } catch (Exception e) { + return Integer.compare(System.identityHashCode(child1), System.identityHashCode(child2)); + } + } + + private static int compareUri(FileObject child1, FileObject child2) { + try { + return child1.getName().getURI().compareTo(child2.getName().getURI()); + } catch (Exception e) { + return Integer.compare(System.identityHashCode(child1), System.identityHashCode(child2)); + } + } + + private static long safeLastModified(FileObject child) { + try { + return child.getContent().getLastModifiedTime(); + } catch (Exception e) { + return Long.MIN_VALUE; + } + } + + private static long safeSize(FileObject child) { + try { + if (child.isFolder()) { + return -1L; + } + return child.getContent().getSize(); + } catch (Exception e) { + return Long.MIN_VALUE; + } + } + /** Case-insensitive filename filter for the current folder listing. */ private boolean shouldFilterOut(String name) { return !Utils.isEmpty(filterText) && !filterMatcher.matches(name); diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/file/types/base/BaseExplorerFileTypeHandler.java b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/file/types/base/BaseExplorerFileTypeHandler.java index bff3fe94fdf..7ac2f0a5761 100644 --- a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/file/types/base/BaseExplorerFileTypeHandler.java +++ b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/file/types/base/BaseExplorerFileTypeHandler.java @@ -112,9 +112,9 @@ public String getFilename() { @Override public void setFilename(String filename) { explorerFile.setFilename(filename); - // Update name based on filename + // Update name based on filename (use variables so named VFS schemes resolve) try { - String name = HopVfs.getFileObject(filename).getName().getBaseName(); + String name = HopVfs.getFileObject(filename, getVariables()).getName().getBaseName(); explorerFile.setName(name); } catch (HopFileException e) { // Ignore diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/file/types/raw/RawExplorerFileTypeHandler.java b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/file/types/raw/RawExplorerFileTypeHandler.java index 3745eb873b2..b850eb5433c 100644 --- a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/file/types/raw/RawExplorerFileTypeHandler.java +++ b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/file/types/raw/RawExplorerFileTypeHandler.java @@ -113,8 +113,10 @@ public void save() throws HopException { } try { String filename = explorerFile.getFilename(); - boolean fileExist = HopVfs.fileExists(filename); - try (java.io.OutputStream outputStream = HopVfs.getOutputStream(filename, false)) { + // Named VFS schemes need variables so providers load from project metadata + boolean fileExist = HopVfs.fileExists(filename, getVariables()); + try (java.io.OutputStream outputStream = + HopVfs.getOutputStream(filename, false, getVariables())) { outputStream.write(editorWidget.getText().getBytes(StandardCharsets.UTF_8)); outputStream.flush(); } @@ -134,8 +136,13 @@ public void saveAs(String filename) throws HopException { throw new HopException("Binary file cannot be saved as text."); } try { - filename = HopVfs.normalize(filename); - FileObject fileObject = HopVfs.getFileObject(filename); + FileObject fileObject = HopVfs.getFileObject(filename, getVariables()); + if (!HopVfs.startsWithScheme(filename, getVariables()) && !filename.contains("://")) { + filename = HopVfs.normalize(filename); + fileObject = HopVfs.getFileObject(filename, getVariables()); + } else { + filename = fileObject.getName().getURI(); + } if (fileObject.exists()) { MessageBox box = new MessageBox(hopGui.getActiveShell(), SWT.YES | SWT.NO | SWT.ICON_QUESTION); diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/file/types/text/BaseTextExplorerFileTypeHandler.java b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/file/types/text/BaseTextExplorerFileTypeHandler.java index a6f72ace63e..e206454e079 100644 --- a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/file/types/text/BaseTextExplorerFileTypeHandler.java +++ b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/file/types/text/BaseTextExplorerFileTypeHandler.java @@ -82,14 +82,15 @@ public void save() throws HopException { try { // Save the current explorer file .... - // + // Named VFS schemes (MinIO, Databricks, WebDAV, …) only resolve when variables are passed so + // HopVfs can load connection providers from project metadata. String filename = explorerFile.getFilename(); - boolean fileExist = HopVfs.fileExists(filename); + boolean fileExist = HopVfs.fileExists(filename, getVariables()); // Save the file... // - try (OutputStream outputStream = HopVfs.getOutputStream(filename, false)) { + try (OutputStream outputStream = HopVfs.getOutputStream(filename, false, getVariables())) { outputStream.write(editorWidget.getText().getBytes(StandardCharsets.UTF_8)); outputStream.flush(); } @@ -117,10 +118,15 @@ public void saveAs(String filename) throws HopException { filename = filename + this.getFileType().getDefaultFileExtension(); } - // Normalize file name - filename = HopVfs.normalize(filename); + // Resolve via VFS with variables (named schemes). Only normalize local/relative paths. + FileObject fileObject = HopVfs.getFileObject(filename, getVariables()); + if (!HopVfs.startsWithScheme(filename, getVariables()) && !filename.contains("://")) { + filename = HopVfs.normalize(filename); + fileObject = HopVfs.getFileObject(filename, getVariables()); + } else { + filename = fileObject.getName().getURI(); + } - FileObject fileObject = HopVfs.getFileObject(filename); if (fileObject.exists()) { MessageBox box = new MessageBox(hopGui.getActiveShell(), SWT.YES | SWT.NO | SWT.ICON_QUESTION); From 1076c684e5770aa77bb3bf8588f3c3b3a8500b0e Mon Sep 17 00:00:00 2001 From: mattcasters Date: Sun, 19 Jul 2026 20:37:35 +0200 Subject: [PATCH 4/4] Issue #7567 : remote execution info on Databricks UC Volumes Publish MainSpark exported metadata for named VFS schemes, cache Files API last_modified on VFS children, and skip mtime pre-filter only when known so Caching File locations on Volumes list correctly in the GUI. Document the Caching File + db-volume pattern with screenshots and cross-links from VFS, execution location, and Execution Information. --- .../pipeline/spark/databricks-connection.png | Bin 0 -> 50243 bytes ...abricks-environment-configuration-file.png | Bin 0 -> 93760 bytes ...perspective-looking-at-spark-execution.png | Bin 0 -> 207228 bytes ...ative-spark-pipeline-run-configuration.png | Bin 0 -> 191158 bytes .../databricks-vfs-connection-to-volume.png | Bin 0 -> 46924 bytes ...caching-execution-information-location.png | Bin 0 -> 84467 bytes .../perspective-execution-information.adoc | 2 + .../execution-information-location.adoc | 2 + .../ROOT/pages/pipeline/spark/databricks.adoc | 147 +++++++++++++++++- .../getting-started-with-native-spark.adoc | 2 + .../ROOT/pages/vfs/databricks-vfs.adoc | 4 +- .../CachingFileExecutionInfoLocation.java | 17 +- .../org/apache/hop/spark/run/MainSpark.java | 18 ++- .../client/RestDatabricksFilesClient.java | 16 ++ .../client/RestDatabricksJobsClient.java | 11 ++ .../vfs/databricks/DatabricksFileObject.java | 47 ++++++ .../databricks/DatabricksFileProvider.java | 7 +- .../vfs/databricks/DatabricksFileSystem.java | 6 + .../vfs/databricks/DatabricksListCache.java | 139 +++++++++++++++++ .../vfs/databricks/DatabricksVfsPlugin.java | 9 +- .../databricks/DatabricksFileObjectTest.java | 31 ++++ .../databricks/DatabricksListCacheTest.java | 62 ++++++++ 22 files changed, 508 insertions(+), 12 deletions(-) create mode 100644 docs/hop-user-manual/modules/ROOT/assets/images/pipeline/spark/databricks-connection.png create mode 100644 docs/hop-user-manual/modules/ROOT/assets/images/pipeline/spark/databricks-environment-configuration-file.png create mode 100644 docs/hop-user-manual/modules/ROOT/assets/images/pipeline/spark/databricks-execution-perspective-looking-at-spark-execution.png create mode 100644 docs/hop-user-manual/modules/ROOT/assets/images/pipeline/spark/databricks-native-spark-pipeline-run-configuration.png create mode 100644 docs/hop-user-manual/modules/ROOT/assets/images/pipeline/spark/databricks-vfs-connection-to-volume.png create mode 100644 docs/hop-user-manual/modules/ROOT/assets/images/pipeline/spark/databricks-volume-caching-execution-information-location.png create mode 100644 plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksListCache.java create mode 100644 plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksListCacheTest.java diff --git a/docs/hop-user-manual/modules/ROOT/assets/images/pipeline/spark/databricks-connection.png b/docs/hop-user-manual/modules/ROOT/assets/images/pipeline/spark/databricks-connection.png new file mode 100644 index 0000000000000000000000000000000000000000..89acd1be8a30f782b1c3eab17aab412d45fab04c GIT binary patch literal 50243 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

L}o{3ehB{h+e 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 L^;z*#(|7+3W#DdW literal 0 HcmV?d00001 diff --git a/docs/hop-user-manual/modules/ROOT/assets/images/pipeline/spark/databricks-environment-configuration-file.png b/docs/hop-user-manual/modules/ROOT/assets/images/pipeline/spark/databricks-environment-configuration-file.png new file mode 100644 index 0000000000000000000000000000000000000000..d2525e3c56e31c897d444efc0c0fddf49e934a8a GIT binary patch literal 93760 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%0DqNkDLi3%zcdF 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 J-RX<}{4eS*_c;In literal 0 HcmV?d00001 diff --git a/docs/hop-user-manual/modules/ROOT/assets/images/pipeline/spark/databricks-execution-perspective-looking-at-spark-execution.png b/docs/hop-user-manual/modules/ROOT/assets/images/pipeline/spark/databricks-execution-perspective-looking-at-spark-execution.png new file mode 100644 index 0000000000000000000000000000000000000000..b0f10adde53e9a4d589b914618d028badf68a581 GIT binary patch literal 207228 zcmZ^K1yoyG*KLpj#VJzUOL2F13bc5OySuwPMO&aiad)SE>~r?oYt1$1+@F;cWYCZakwG93n(RAC6%gp<4hRHCh=c&Vv!4au4g7iO z@J`bi1R@Fl^A9F&`^*#sA_vJzim7?%9j>@1s+v9_obIkJUz)`4zrZhb`4X$5R&G!< zMBngHr`1{$H+imt-e^&GMc38c|Dcq%I089JS4<7QW~xAz$iPefyKLvp%^>gh-wI|l z-%St@GAH?*Cw|{|@Z5ZGN{9|0JYk3?=23>h`ukQ8Qp}9`_uI<%vWsqYEz**I-;VlX zJ^y}JlCIA{@9ogggnDwsU$;Hpego3~@*~J>DKdY5RiZfR&ff=P6@1BOPDeWTzLv7P z$*lgxVW3b41A?TZH(8Y_yFtn2(2qZoOkc&M`=Cp|7gW_nzkj-jtG+FpgE%D@%vt5k zSM?kF1E7 z+jWJO-xQed=7PHnAx;acM`^PKDL=HB%0Dqk);Omz(MJZgwD5bh>s={vXjR~GYfG%3 zTd)$w6jxN3^2Yt=McIS@_S0bX_i)15iu+nlM~9w}%k1yh*WG+|RZ^XXd2

a`KaX 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ⅆ$ikTU0MFGA1-_5 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∈h39GS*;#D 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 literal 0 HcmV?d00001 diff --git a/docs/hop-user-manual/modules/ROOT/assets/images/pipeline/spark/databricks-native-spark-pipeline-run-configuration.png b/docs/hop-user-manual/modules/ROOT/assets/images/pipeline/spark/databricks-native-spark-pipeline-run-configuration.png new file mode 100644 index 0000000000000000000000000000000000000000..92012c5340b4d3027e5c89637c7a66cf1c555879 GIT binary patch literal 191158 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 z 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

;<}L4+6}8u}Hth=>^AvygTv=-#1Rpj2Qq#bV_ZH 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

v5#nQt3?97;iz!DNZ(E6i7#Y$Xo!l| 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

dlvXjp!NdeL6|5I8)o^tCxH6`94GNv+Q0 zRbhTQEZqm^TP{@RPmgThr^=HnYA%D>Z}m5Gza9+ z=efz&EJvxV^_*1KUs{r|P(=3;I&0_8i?z3?>pTvfBo|ndTPLFUe~$kncMBGt-*8HV zVslQ4!CA2AFmhUG1!b*b46D95y%9_j8Y4*>4I_Y?r406rY+d(UD}Y`m_vmwMb{S8$WeYTU#9omzF+;}s$vWOo_FYMR;d-v#&@Sv>wrSI(l)Oy`I$Afk!wi3a=RjKpXwR3+~2zWe+4K`80_N-^u zLEe7Btn`n`ogCM__>xi?y?&CbE0uIyW}U>;AZ#309<}u7HbGJgN_TfpW;+StMCBDS ztd9Ml* zQ5Si=?W9v79~{*(VC)pIE?g$ZeormxzE&hg^xK%L5(w7UQeVVUY&ih3*`R2RQqB371ENBmq|wuL{RvATeAOc zOqMn2kyH6)35eo$ba@Ow3kB015V&b9BV(%0ALn|Ge{2W1r~gHYMs@H&6GG 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

ltGoV$EtmcQ(3R|`yD(_NdY%5 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 c+vUCR`eBmQH=|EAfrV*uZ> .Sample `hello-databricks.hpl` in the project explorer (Generate rows → UUID → Dummy) image::pipeline/spark/databricks-pipeline-hello-databricks.png[Hello Databricks sample pipeline in Hop GUI: Generate rows, Random value (uuid), Dummy,width=85%] @@ -182,11 +183,144 @@ From Hop GUI and local transforms you can use a xref:metadata-types/databricks-v That is **Hop-side I/O only** — it does not replace absolute `/Volumes/…` paths on the cluster or in Jobs API library URIs. See xref:vfs/databricks-vfs.adoc[Databricks Volumes / Workspace VFS]. -==== Execution information on a UC Volume (optional) +[[exec-info-on-volume]] +=== Execution information on a UC Volume -You can point a **Caching File** (or File) xref:metadata-types/execution-information-location.adoc[execution information location] at a Databricks VFS URI, for example `db-volume:///executions`, so the MainSpark **driver** writes Hop execution JSON/samples to a Volume via the Files API and the laptop GUI can open the same location remotely. +You can store Hop **execution information** (pipeline graph, logs, transform metrics, and row samples from an execution data profile) on a **Unity Catalog Volume** and open it from the laptop Hop GUI — even though the pipeline ran on Databricks under `MainSpark`. -This is suitable for **small** execution metadata only (same Files API limits as other VFS use). Prefer the **Caching File** location with a multi-second persistence delay. The job package must include the VFS connection, Databricks Connection (PAT via variables), and location metadata; native Spark Dataset paths still use `/Volumes/…` or cloud URIs, not the VFS scheme. +That works because: + +* The **Caching File** location writes one JSON file per top-level execution (plus nested state/samples inside it). +* The root folder can be a **Databricks VFS** URI (for example `db-volume:///executions`). +* On the cluster, MainSpark resolves named VFS schemes from the **exported project metadata** and writes through the **Files API** using the Databricks Connection PAT. +* On the laptop, the same location metadata + environment variables let the xref:hop-gui/perspective-execution-information.adoc[Execution Information Perspective] list and open those remote files. + +This is for **execution metadata** only (logs, metrics, sample rows), not for bulk Spark datasets. Prefer **Caching File** over plain File so writes are batched (fewer Files API round-trips). Native Spark Dataset I/O still uses `/Volumes/…` or cloud URIs — not the Hop VFS scheme. + +==== Pattern overview + +[options="header",cols="1,3"] +|=== +|Piece |Role + +|xref:metadata-types/databricks-connection.adoc[Databricks Connection] +|Workspace host + PAT (Jobs API and Files API auth for VFS) + +|Environment / lifecycle config +|`DATABRICKS_HOST`, `DATABRICKS_TOKEN` (and optional cluster id). Must be active in Hop GUI **and** deployed to the job (`--HopConfigFile` / env-config artifact) + +|xref:metadata-types/databricks-vfs-connection.adoc[Databricks VFS Connection] +|Named scheme (e.g. `db-volume`) + optional root path under a Volume + +|xref:metadata-types/execution-information-location.adoc[Execution Information Location] (**Caching File**) +|Root folder = `{scheme}:///executions` (or another folder under the VFS root) + +|xref:metadata-types/pipeline-run-config.adoc[Pipeline run configuration] (**Native Spark**) +|**Execution information location** = the Caching File location; optional **execution data profile** for sample rows + +|Deploy & run package +|Exports connection, VFS, location, run config, and (when configured) the env config so the **driver** can write the same URI +|=== + +==== 1. Databricks Connection (variables for secrets) + +Create a Jobs/PAT connection. Prefer variables so the same metadata works on the laptop and on the cluster after Deploy & run ships the environment config. + +.Databricks Connection: workspace host and PAT via `${DATABRICKS_HOST}` / encrypted token variable +image::pipeline/spark/databricks-connection.png[Databricks Connection metadata editor with variable-based host and personal access token,width=85%] + +==== 2. Environment configuration file + +Define at least host and token in a Hop **environment** or lifecycle configuration file that you use when opening the project in GUI and when Deploy & run attaches env config for MainSpark: + +---- +DATABRICKS_HOST=https://dbc-….cloud.databricks.com +DATABRICKS_TOKEN=Encrypted … +---- + +Optional: `DATABRICKS_CLUSTER_ID` for existing-cluster deploy. + +.Environment configuration: `DATABRICKS_HOST`, encrypted `DATABRICKS_TOKEN`, optional cluster id +image::pipeline/spark/databricks-environment-configuration-file.png[Hop environment configuration file editor with Databricks host, token, and cluster id variables,width=90%] + +[IMPORTANT] +==== +If the GUI can browse the Volume but the cluster writes a **local** path such as `db-volume:///…` under the driver cwd, the driver did **not** resolve the named VFS scheme or the host/token variables. Confirm: + +* Env config is deployed (`env-config-….json` / `--HopConfigFile`) and contains the same variables. +* Exported **metadata** includes the Databricks Connection, VFS connection, and execution location (Deploy & run package / metadata export). +* The PAT can **write** to the Volume path. +==== + +==== 3. Databricks VFS Connection (scheme + Volume root) + +Create a VFS connection whose **name is the URI scheme**. Point **Root path** at a folder on a UC Volume (create that folder in Catalog Explorer if needed). + +.Databricks VFS Connection: scheme `db-volume`, connection `databricks-free`, root `/Volumes/…/testing` +image::pipeline/spark/databricks-vfs-connection-to-volume.png[Databricks VFS Connection editor with scheme name, Databricks Connection, and Volume root path,width=85%] + +With root path `/Volumes/apache-hop/default/testing`: + +* Hop URI `db-volume:///executions` maps to workspace path `/Volumes/apache-hop/default/testing/executions` +* Leave root empty only if you prefer full paths in every URI (`db-volume:///Volumes/…`) + +See xref:vfs/databricks-vfs.adoc[Databricks Volumes / Workspace VFS]. + +==== 4. Caching File execution information location + +Create an xref:metadata-types/execution-information-location.adoc[Execution Information Location]: + +* **Location type**: **Caching File location** +* **Folder**: the VFS URI, e.g. `db-volume:///executions` +* **Create folder?**: optional; you can also create `executions` on the Volume first +* **Persistence delay**: multi-second (e.g. `5000`) so the driver does not write on every metric tick +* **Maximum cache age**: long enough to cover the pipeline (e.g. hours for long jobs) + +.Caching File location `db-executions` with folder `db-volume:///executions` +image::pipeline/spark/databricks-volume-caching-execution-information-location.png[Execution information location editor: Caching File type and Databricks VFS folder URI,width=85%] + +==== 5. Native Spark run configuration + +On the **Native Spark** pipeline run configuration used by Deploy & run: + +* **Execution information location** = the Caching File location (e.g. `db-executions`) +* **Execution data profile** = optional but recommended (e.g. `first-last`) so the perspective can show sample rows +* Engine type **Native Spark pipeline engine**; fat jar path is used for local `spark-submit` — on Databricks, Deploy & run supplies the library jar separately + +.Native Spark run configuration: execution location `db-executions`, data profile `first-last` +image::pipeline/spark/databricks-native-spark-pipeline-run-configuration.png[Native Spark pipeline run configuration with execution information location and data profile,width=75%] + +==== 6. Run on Databricks, inspect from Hop GUI + +. Deploy & run the pipeline (or workflow with Job Run) with the run configuration above and env config attached. +. Wait until the job finishes (or is far enough along that the cache has flushed at least once). +. In Hop GUI, open the **Execution Information** perspective (`Ctrl-Shift-I`). +. Select the location (e.g. `db-executions`), refresh, and open the pipeline execution. +. Use **Info**, **Log**, **Metrics**, and **Data** tabs — same as a local run. + +.Execution Information perspective: `hello-databricks` from Volume location `db-executions` with cluster log text +image::pipeline/spark/databricks-execution-perspective-looking-at-spark-execution.png[Execution Information perspective showing a Spark pipeline execution loaded from a Databricks Volume,width=95%] + +Typical log lines on a successful remote capture: + +---- +Using execution information location 'db-executions' … +Prepared native Spark pipeline engine with run configuration 'databricks-native' … +Reusing active SparkSession (version=4.1.0, …) +Spark pipeline finished, result row count=… +Registered … transform sample set(s) from Spark executors +---- + +JSON files on the Volume look like `{execution-id}.json` under the mapped folder (e.g. `/Volumes/…/testing/executions/`). + +==== Tips and limits + +* **Time filter** in the perspective defaults to a short window (e.g. `< 1h`). Widen it if the run is older. +* **Parents only** / status filters still apply; turn them off if you expect a child execution. +* Files API is **single-stream HTTP** — fine for execution JSON (tens to a few hundred KB typical); do not use this path for large data landings. +* **Create parent folder** on the Volume before the first run if create-folder is off or list permissions are restricted. +* Laptop and cluster must share the **same** connection name, VFS scheme name, location name, and variable names so metadata exported for Deploy & run matches what the GUI uses. +* Deleting executions from the perspective removes the remote JSON (subject to PAT permissions). == Compute modes (Deploy & run) @@ -543,12 +677,17 @@ Databricks does **not** expose a standard content MD5/SHA for volume files compa * [ ] Cluster / compute = existing classic id **or** `new_cluster` with valid `node_type_id` / `spark_version` * [ ] Job id empty on first create; wait mode and timeout sized for upload + **job cluster cold start** (often 8+ minutes) + pipeline run * [ ] After success: note Job ID, Run ID, run page URL variables; open run in Databricks UI +* [ ] (Optional remote execution history) VFS connection + Caching File location on a Volume; run config points at that location; env vars on driver; GUI Execution Information perspective can list the run — see <> == Related * xref:workflow/actions/databricks-job-run.adoc[Databricks Job Run] * xref:workflow/actions/databricks-job-wait.adoc[Databricks Job Wait] * xref:metadata-types/databricks-connection.adoc[Databricks Connection] +* xref:metadata-types/databricks-vfs-connection.adoc[Databricks VFS Connection] +* xref:vfs/databricks-vfs.adoc[Databricks Volumes / Workspace VFS] +* xref:metadata-types/execution-information-location.adoc[Execution Information Location] +* xref:hop-gui/perspective-execution-information.adoc[Execution Information Perspective] * xref:pipeline/spark/getting-started-with-native-spark.adoc[Getting started with the native Spark engine] * xref:pipeline/pipeline-run-configurations/native-spark-pipeline-engine.adoc[Native Spark run configuration] * xref:pipeline/spark/paths-and-filesystems.adoc[Paths and file systems] diff --git a/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/getting-started-with-native-spark.adoc b/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/getting-started-with-native-spark.adoc index d8bfda450bb..a137ff28fb8 100644 --- a/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/getting-started-with-native-spark.adoc +++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/getting-started-with-native-spark.adoc @@ -518,6 +518,8 @@ How data is produced: If the location is file-based and you need *samples from cluster workers*, the root folder must be *writable from every executor* (shared filesystem or object store). A path that exists only on the driver will still get pipeline/transform *state*, but executor samples will be missing or incomplete. ==== +On **Databricks**, a practical pattern is a **Caching File** location whose root is a named Databricks VFS URI on a UC Volume (driver writes execution JSON via the Files API; laptop GUI opens the same location). Walkthrough: xref:pipeline/spark/databricks.adoc#exec-info-on-volume[Execution information on a UC Volume]. + On `local[*]`, Spark’s Jackson libraries must not shadow Hop’s Jackson under the plugin classloader. The Spark plugin packaging excludes core Jackson jars so sampling and `HopJson` keep working. == How transforms map to Spark diff --git a/docs/hop-user-manual/modules/ROOT/pages/vfs/databricks-vfs.adoc b/docs/hop-user-manual/modules/ROOT/pages/vfs/databricks-vfs.adoc index b884c241e56..a93c7b98380 100644 --- a/docs/hop-user-manual/modules/ROOT/pages/vfs/databricks-vfs.adoc +++ b/docs/hop-user-manual/modules/ROOT/pages/vfs/databricks-vfs.adoc @@ -78,6 +78,7 @@ Hop Databricks VFS URIs are for **Hop-side** I/O only: * Hop GUI file dialogs, local engine, classic file transforms/actions * Convenience copies (configs, samples, modest artifacts) via the workspace **Files API** +* **Execution information** (Caching File location root folder) so MainSpark on the cluster and the laptop GUI share the same Volume path — see xref:pipeline/spark/databricks.adoc#exec-info-on-volume[Execution information on a UC Volume] Do **not** use this VFS as the primary path for **large Spark data landings**. The Files API is a single-stream workspace HTTP upload — fine for small/medium files, not a bulk object-store client. @@ -102,6 +103,7 @@ If root path is left empty, every URI must include the full `/Volumes/…` or `/ * xref:metadata-types/databricks-vfs-connection.adoc[Databricks VFS Connection] * xref:metadata-types/databricks-connection.adoc[Databricks Connection] -* xref:pipeline/spark/databricks.adoc[Native Spark on Databricks] — artifact storage, Files API vs DBFS +* xref:pipeline/spark/databricks.adoc[Native Spark on Databricks] — artifact storage, Files API vs DBFS, xref:pipeline/spark/databricks.adoc#exec-info-on-volume[execution information on a Volume] +* xref:metadata-types/execution-information-location.adoc[Execution Information Location] * xref:workflow/actions/databricks-job-run.adoc[Databricks Job Run] * xref:vfs.adoc[Virtual File Systems overview] diff --git a/engine/src/main/java/org/apache/hop/execution/caching/CachingFileExecutionInfoLocation.java b/engine/src/main/java/org/apache/hop/execution/caching/CachingFileExecutionInfoLocation.java index a018ca726f8..f02de3d70b2 100644 --- a/engine/src/main/java/org/apache/hop/execution/caching/CachingFileExecutionInfoLocation.java +++ b/engine/src/main/java/org/apache/hop/execution/caching/CachingFileExecutionInfoLocation.java @@ -237,7 +237,9 @@ protected void retrieveIds( long startDate = ZonedDateTime.of(roughStartDate, ZoneId.systemDefault()).toInstant().toEpochMilli(); long lastModified = file.getContent().getLastModifiedTime(); - if (lastModified < startDate) { + // Some VFS providers (e.g. Databricks Files API before list-cache attach) report + // lastModified as 0 / unknown. Do not pre-skip those — load and apply content filters. + if (lastModified > 0 && lastModified < startDate) { // Skip for performance continue; } @@ -258,7 +260,18 @@ protected void retrieveIds( } if (!ids.contains(new DatedId(id, null))) { - ids.add(new DatedId(id, new Date(file.getContent().getLastModifiedTime()))); + long lastModified = file.getContent().getLastModifiedTime(); + Date dated; + if (lastModified > 0) { + dated = new Date(lastModified); + } else if (entry.getExecution() != null + && entry.getExecution().getExecutionStartDate() != null) { + // VFS providers without mtime: use execution start for sorting + dated = entry.getExecution().getExecutionStartDate(); + } else { + dated = new Date(0L); + } + ids.add(new DatedId(id, dated)); // To add child IDs we need to load the file. // We won't store these in the cache though. diff --git a/plugins/engines/spark/src/main/java/org/apache/hop/spark/run/MainSpark.java b/plugins/engines/spark/src/main/java/org/apache/hop/spark/run/MainSpark.java index 4c0978e2c7c..fbb2bcf0500 100644 --- a/plugins/engines/spark/src/main/java/org/apache/hop/spark/run/MainSpark.java +++ b/plugins/engines/spark/src/main/java/org/apache/hop/spark/run/MainSpark.java @@ -19,11 +19,13 @@ import java.io.IOException; import java.io.InputStream; +import java.util.List; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.hop.core.Const; import org.apache.hop.core.HopEnvironment; import org.apache.hop.core.config.DescribedVariablesConfigFile; +import org.apache.hop.core.encryption.Encr; import org.apache.hop.core.exception.HopException; import org.apache.hop.core.metadata.SerializableMetadataProvider; import org.apache.hop.core.plugins.IPlugin; @@ -33,7 +35,10 @@ import org.apache.hop.core.variables.Variables; import org.apache.hop.core.vfs.HopVfs; import org.apache.hop.core.xml.XmlHandler; +import org.apache.hop.metadata.api.IHopMetadataProvider; import org.apache.hop.metadata.api.IHopMetadataSerializer; +import org.apache.hop.metadata.serializer.multi.MultiMetadataProvider; +import org.apache.hop.metadata.util.HopMetadataInstance; import org.apache.hop.pipeline.PipelineMeta; import org.apache.hop.pipeline.config.IPipelineEngineRunConfiguration; import org.apache.hop.pipeline.config.PipelineRunConfiguration; @@ -168,7 +173,18 @@ private static void runPipeline(String[] args) throws Exception { String metadataJson = readFileIntoString(metadataPath, Const.UTF_8); String runConfigName = parsed.getRunConfigName(); - SerializableMetadataProvider metadataProvider = new SerializableMetadataProvider(metadataJson); + SerializableMetadataProvider serializableMetadata = + new SerializableMetadataProvider(metadataJson); + // Publish as the process-wide metadata instance so named VFS plugins (Databricks, MinIO, …) + // load connections from the export — not only from a hop-config metadata folder (empty on + // Databricks drivers). Reset HopVfs so scheme providers are registered against this metadata. + MultiMetadataProvider metadataProvider = + new MultiMetadataProvider( + Encr.getEncoder(), List.of(serializableMetadata), variables); + HopMetadataInstance.setMetadataProvider(metadataProvider); + HopVfs.reset(); + System.out.println( + ">>>>>> Runtime metadata published for named VFS schemes (HopMetadataInstance)"); IHopMetadataSerializer serializer = metadataProvider.getSerializer(PipelineRunConfiguration.class); diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksFilesClient.java b/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksFilesClient.java index 8662c854d18..1e58d9a1faf 100644 --- a/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksFilesClient.java +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksFilesClient.java @@ -73,13 +73,29 @@ public static RestDatabricksFilesClient create( if (StringUtils.isBlank(host)) { throw new HopException("Databricks workspace host is required"); } + if (looksUnresolved(host)) { + throw new HopException( + "Databricks workspace host still contains unresolved variables after resolve: '" + + host + + "'. Set DATABRICKS_HOST (or the variables used in the connection) on the process " + + "that opens the VFS scheme (Hop GUI environment, or MainSpark --HopConfigFile / job env)."); + } if (StringUtils.isBlank(token)) { throw new HopException("Databricks personal access token is required"); } + if (looksUnresolved(token) || token.contains("${")) { + throw new HopException( + "Databricks personal access token still contains unresolved variables. Set DATABRICKS_TOKEN " + + "(or the variables used in the connection) on the process that opens the VFS scheme."); + } HttpClient client = HttpClient.newBuilder().connectTimeout(TIMEOUT).build(); return new RestDatabricksFilesClient(host, token, client); } + private static boolean looksUnresolved(String value) { + return value != null && (value.contains("${") || value.contains("%%")); + } + /** Visible for tests with a custom {@link HttpClient}. */ public static RestDatabricksFilesClient createForTest( String hostBase, String token, HttpClient httpClient) { diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksJobsClient.java b/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksJobsClient.java index 97ebbe2bc29..77161fda3f5 100644 --- a/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksJobsClient.java +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/databricks/client/RestDatabricksJobsClient.java @@ -83,9 +83,20 @@ public static RestDatabricksJobsClient create( if (StringUtils.isBlank(host)) { throw new HopException("Databricks workspace host is required"); } + if (host.contains("${") || host.contains("%%")) { + throw new HopException( + "Databricks workspace host still contains unresolved variables: '" + + host + + "'. Set DATABRICKS_HOST (or the variables used in the connection) for this process."); + } if (StringUtils.isBlank(token)) { throw new HopException("Databricks personal access token is required"); } + if (token.contains("${") || token.contains("%%")) { + throw new HopException( + "Databricks personal access token still contains unresolved variables. Set DATABRICKS_TOKEN " + + "for this process."); + } HttpClient client = HttpClient.newBuilder().connectTimeout(TIMEOUT).build(); return new RestDatabricksJobsClient(host, apiBase, token, client); } diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileObject.java b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileObject.java index 4bbb6d5f2bd..8196a0a25a1 100644 --- a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileObject.java +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileObject.java @@ -24,7 +24,9 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.apache.commons.vfs2.FileNotFoundException; import org.apache.commons.vfs2.FileObject; @@ -37,6 +39,7 @@ import org.apache.hop.databricks.client.DirectoryEntry; import org.apache.hop.databricks.client.RestDatabricksFilesClient; import org.apache.hop.databricks.client.WorkspaceFileMetadata; +import org.apache.hop.vfs.databricks.DatabricksListCache.ChildInfo; /** File object backed by the Databricks Files API (UC Volumes / Workspace). */ public class DatabricksFileObject extends AbstractFileObject { @@ -71,16 +74,31 @@ protected void doAttach() throws Exception { // No root configured — virtual multi-volume root type = FileType.FOLDER; size = -1L; + lastModified = 0L; return; } if (!RestDatabricksFilesClient.isFilesApiPath(path)) { if ("/Volumes".equals(path) || "/Workspace".equals(path)) { type = FileType.FOLDER; size = -1L; + lastModified = 0L; return; } type = FileType.IMAGINARY; size = -1L; + lastModified = 0L; + return; + } + + // Prefer metadata from a recent parent directory listing (includes last_modified). + ChildInfo cached = getAbstractFileSystem().getListCache().get(path); + if (cached != null) { + type = cached.type; + size = cached.size; + lastModified = cached.lastModifiedEpochMs; + if (type == FileType.FOLDER) { + // Keep listedChildren null until doListChildren; type is enough for attach. + } return; } @@ -89,12 +107,15 @@ protected void doAttach() throws Exception { && path.equals(getAbstractFileSystem().getRootPath())) { try { listedChildren = client().listDirectory(path); + rememberListCache(path, listedChildren); type = FileType.FOLDER; size = -1L; + lastModified = 0L; } catch (HopException e) { // Still treat as folder so create child works even if list fails (empty / permission) type = FileType.FOLDER; size = -1L; + lastModified = 0L; listedChildren = null; } return; @@ -105,19 +126,37 @@ protected void doAttach() throws Exception { if (meta.exists()) { type = FileType.FILE; size = meta.sizeBytes(); + // HEAD does not reliably expose last_modified; leave 0 (unknown) unless list cache filled it. + lastModified = 0L; return; } try { listedChildren = client.listDirectory(path); + rememberListCache(path, listedChildren); type = FileType.FOLDER; size = -1L; + lastModified = 0L; } catch (HopException e) { type = FileType.IMAGINARY; size = -1L; + lastModified = 0L; listedChildren = null; } } + private void rememberListCache(String parentPath, List entries) { + if (entries == null || entries.isEmpty()) { + return; + } + Map map = new LinkedHashMap<>(); + for (DirectoryEntry entry : entries) { + if (entry.path() != null) { + map.put(DatabricksListCache.normalizePath(entry.path()), ChildInfo.fromEntry(entry)); + } + } + getAbstractFileSystem().getListCache().put(parentPath, map); + } + @Override protected void doDetach() { type = FileType.IMAGINARY; @@ -155,6 +194,7 @@ protected String[] doListChildren() throws Exception { } if (listedChildren == null) { listedChildren = client().listDirectory(path); + rememberListCache(path, listedChildren); } return listedChildren.stream() .map( @@ -217,8 +257,11 @@ public void close() throws IOException { try { type = FileType.FILE; size = Files.size(temp); + lastModified = System.currentTimeMillis(); + getAbstractFileSystem().getListCache().invalidateParentOf(path); } catch (IOException ignored) { type = FileType.FILE; + lastModified = System.currentTimeMillis(); } } finally { try { @@ -254,6 +297,8 @@ protected void doCreateFolder() throws Exception { client().createDirectory(path); type = FileType.FOLDER; listedChildren = null; + lastModified = System.currentTimeMillis(); + getAbstractFileSystem().getListCache().invalidateParentOf(path); } /** @@ -300,6 +345,8 @@ protected void doDelete() throws Exception { } type = FileType.IMAGINARY; listedChildren = null; + lastModified = 0L; + getAbstractFileSystem().getListCache().invalidateParentOf(path); } /** diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileProvider.java b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileProvider.java index d695084fa10..8c3ef213291 100644 --- a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileProvider.java +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileProvider.java @@ -31,6 +31,7 @@ import org.apache.hop.databricks.client.RestDatabricksFilesClient; import org.apache.hop.databricks.metadata.DatabricksConnection; import org.apache.hop.metadata.api.IHopMetadataProvider; +import org.apache.hop.metadata.util.HopMetadataInstance; import org.apache.hop.metadata.util.HopMetadataUtil; import org.apache.hop.vfs.databricks.metadata.DatabricksVfsConnection; @@ -113,8 +114,10 @@ private DatabricksConnection resolveDatabricksConnection() throws HopException { + "' has no Databricks Connection selected"); } connName = variables.resolve(connName); - IHopMetadataProvider metadataProvider = - HopMetadataUtil.getStandardHopMetadataProvider(variables); + IHopMetadataProvider metadataProvider = HopMetadataInstance.getMetadataProvider(); + if (metadataProvider == null) { + metadataProvider = HopMetadataUtil.getStandardHopMetadataProvider(variables); + } DatabricksConnection connection = metadataProvider.getSerializer(DatabricksConnection.class).load(connName); if (connection == null) { diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileSystem.java b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileSystem.java index 121348383c9..52816eb8862 100644 --- a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileSystem.java +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksFileSystem.java @@ -35,6 +35,8 @@ public class DatabricksFileSystem extends AbstractFileSystem { /** Normalized scheme root, or empty when absolute workspace paths are required. */ private final String rootPath; + private final DatabricksListCache listCache = new DatabricksListCache(); + protected DatabricksFileSystem( final FileName rootName, final DatabricksFilesClient client, @@ -52,6 +54,10 @@ protected DatabricksFileSystem( this.rootPath = rootPath == null ? "" : rootPath; } + DatabricksListCache getListCache() { + return listCache; + } + @Override protected void addCapabilities(final Collection caps) { caps.addAll(DatabricksFileProvider.CAPABILITIES); diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksListCache.java b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksListCache.java new file mode 100644 index 00000000000..ef7dfa52b81 --- /dev/null +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksListCache.java @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.vfs.databricks; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import org.apache.commons.vfs2.FileType; +import org.apache.hop.databricks.client.DirectoryEntry; + +/** + * Short-lived cache of directory list results. When a folder is listed via the Files API, child + * paths and their type/size/lastModified are stored so later {@code doAttach()} calls for those + * children can use metadata without an extra HEAD (and so last-modified is available for + * execution-info date filtering). + */ +public class DatabricksListCache { + + public static final long DEFAULT_TTL_MS = 10_000L; + + public static final class ChildInfo { + public final FileType type; + public final long size; + public final long lastModifiedEpochMs; + + public ChildInfo(FileType type, long size, long lastModifiedEpochMs) { + this.type = type; + this.size = size; + this.lastModifiedEpochMs = lastModifiedEpochMs; + } + + static ChildInfo fromEntry(DirectoryEntry entry) { + FileType type = entry.directory() ? FileType.FOLDER : FileType.FILE; + long size = entry.directory() ? -1L : entry.sizeBytes(); + return new ChildInfo(type, size, entry.lastModifiedEpochMs()); + } + } + + private final long ttlMs; + private final ConcurrentHashMap byParentPath = new ConcurrentHashMap<>(); + + public DatabricksListCache() { + this(DEFAULT_TTL_MS); + } + + public DatabricksListCache(long ttlMs) { + this.ttlMs = ttlMs; + } + + private static class CachedList { + final Map byChildPath; + final long expiryMillis; + + CachedList(Map byChildPath, long expiryMillis) { + this.byChildPath = new ConcurrentHashMap<>(byChildPath); + this.expiryMillis = expiryMillis; + } + } + + /** Store list results for a parent workspace path (absolute Files API path). */ + public void put(String parentWorkspacePath, Map childrenByPath) { + if (childrenByPath == null || childrenByPath.isEmpty()) { + return; + } + String key = normalizePath(parentWorkspacePath); + byParentPath.put(key, new CachedList(childrenByPath, System.currentTimeMillis() + ttlMs)); + } + + /** + * Look up cached metadata for a child workspace path. Returns null if missing or the parent list + * cache expired. + */ + public ChildInfo get(String childWorkspacePath) { + String child = normalizePath(childWorkspacePath); + String parent = parentPath(child); + CachedList cached = byParentPath.get(parent); + if (cached == null) { + return null; + } + if (System.currentTimeMillis() > cached.expiryMillis) { + byParentPath.remove(parent, cached); + return null; + } + ChildInfo info = cached.byChildPath.get(child); + if (info != null) { + return info; + } + // Directories may be listed with or without trailing slash + if (!child.endsWith("/")) { + return cached.byChildPath.get(child + "/"); + } + return cached.byChildPath.get(child.substring(0, child.length() - 1)); + } + + public void invalidateParentOf(String workspacePath) { + byParentPath.remove(parentPath(normalizePath(workspacePath))); + } + + public void invalidate(String parentWorkspacePath) { + byParentPath.remove(normalizePath(parentWorkspacePath)); + } + + static String parentPath(String path) { + if (path == null || path.isEmpty() || "/".equals(path)) { + return "/"; + } + String stripped = + path.endsWith("/") && path.length() > 1 ? path.substring(0, path.length() - 1) : path; + int last = stripped.lastIndexOf('/'); + if (last <= 0) { + return "/"; + } + return stripped.substring(0, last); + } + + static String normalizePath(String path) { + if (path == null || path.isEmpty()) { + return "/"; + } + if (path.length() > 1 && path.endsWith("/")) { + return path.substring(0, path.length() - 1); + } + return path; + } +} diff --git a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksVfsPlugin.java b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksVfsPlugin.java index ab81b04ab4f..dd6b7a43292 100644 --- a/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksVfsPlugin.java +++ b/plugins/tech/databricks/src/main/java/org/apache/hop/vfs/databricks/DatabricksVfsPlugin.java @@ -27,6 +27,7 @@ import org.apache.hop.core.vfs.plugin.IVfs; import org.apache.hop.core.vfs.plugin.VfsPlugin; import org.apache.hop.metadata.api.IHopMetadataProvider; +import org.apache.hop.metadata.util.HopMetadataInstance; import org.apache.hop.metadata.util.HopMetadataUtil; import org.apache.hop.vfs.databricks.metadata.DatabricksVfsConnection; @@ -56,8 +57,12 @@ public FileProvider getProvider() { public Map getProviders(IVariables variables) { Map providers = new HashMap<>(); try { - IHopMetadataProvider metadataProvider = - HopMetadataUtil.getStandardHopMetadataProvider(variables); + // Prefer the active runtime metadata (GUI project / MainSpark export). Standard folders + // alone are empty on Databricks (no hop-config metadata tree). + IHopMetadataProvider metadataProvider = HopMetadataInstance.getMetadataProvider(); + if (metadataProvider == null) { + metadataProvider = HopMetadataUtil.getStandardHopMetadataProvider(variables); + } List connections = metadataProvider.getSerializer(DatabricksVfsConnection.class).loadAll(); for (DatabricksVfsConnection connection : connections) { diff --git a/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksFileObjectTest.java b/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksFileObjectTest.java index f0a700101db..1078e584eea 100644 --- a/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksFileObjectTest.java +++ b/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksFileObjectTest.java @@ -121,6 +121,37 @@ void listDirectoryReturnsChildren() throws Exception { assertArrayEquals(new String[] {"data.csv", "subdir"}, names); } + @Test + void listCacheProvidesLastModifiedOnChildAttach() throws Exception { + long mtime = 1_700_000_000_000L; + server.stubFor( + WireMock.head(WireMock.urlEqualTo("/api/2.0/fs/files/Volumes/c/s/v")) + .willReturn(WireMock.aResponse().withStatus(404))); + server.stubFor( + WireMock.get(WireMock.urlEqualTo("/api/2.0/fs/files/Volumes/c/s/v")) + .willReturn(WireMock.aResponse().withStatus(404))); + server.stubFor( + WireMock.get(WireMock.urlEqualTo("/api/2.0/fs/directories/Volumes/c/s/v")) + .willReturn( + WireMock.aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/json") + .withBody( + """ + {"contents":[ + {"name":"run.json","path":"/Volumes/c/s/v/run.json","is_directory":false,"file_size":99,"last_modified":%d} + ]} + """ + .formatted(mtime)))); + + FileObject dir = resolve("/Volumes/c/s/v"); + FileObject[] children = dir.getChildren(); + assertEquals(1, children.length); + assertEquals(FileType.FILE, children[0].getType()); + assertEquals(99L, children[0].getContent().getSize()); + assertEquals(mtime, children[0].getContent().getLastModifiedTime()); + } + @Test void writeThenReadRoundTrip() throws Exception { byte[] payload = "vfs-round-trip".getBytes(StandardCharsets.UTF_8); diff --git a/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksListCacheTest.java b/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksListCacheTest.java new file mode 100644 index 00000000000..b1319a83662 --- /dev/null +++ b/plugins/tech/databricks/src/test/java/org/apache/hop/vfs/databricks/DatabricksListCacheTest.java @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.vfs.databricks; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; + +import java.util.Map; +import org.apache.commons.vfs2.FileType; +import org.junit.jupiter.api.Test; + +class DatabricksListCacheTest { + + @Test + void putAndGetByChildPath() { + DatabricksListCache cache = new DatabricksListCache(60_000L); + cache.put( + "/Volumes/c/s/v", + Map.of( + "/Volumes/c/s/v/a.json", new DatabricksListCache.ChildInfo(FileType.FILE, 10L, 1234L))); + + DatabricksListCache.ChildInfo info = cache.get("/Volumes/c/s/v/a.json"); + assertNotNull(info); + assertEquals(FileType.FILE, info.type); + assertEquals(10L, info.size); + assertEquals(1234L, info.lastModifiedEpochMs); + } + + @Test + void expiredEntriesAreDropped() throws Exception { + DatabricksListCache cache = new DatabricksListCache(1L); + cache.put( + "/Volumes/c/s/v", + Map.of( + "/Volumes/c/s/v/a.json", new DatabricksListCache.ChildInfo(FileType.FILE, 10L, 1234L))); + Thread.sleep(5L); + assertNull(cache.get("/Volumes/c/s/v/a.json")); + } + + @Test + void parentPathHelpers() { + assertEquals("/Volumes/c/s/v", DatabricksListCache.parentPath("/Volumes/c/s/v/a.json")); + assertEquals("/", DatabricksListCache.parentPath("/Volumes")); + assertEquals("/Volumes/c/s/v", DatabricksListCache.normalizePath("/Volumes/c/s/v/")); + } +}