<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic How to upload a file to Unity catalog volume using databricks asset bundles in Administration &amp; Architecture</title>
    <link>https://community.databricks.com/t5/administration-architecture/how-to-upload-a-file-to-unity-catalog-volume-using-databricks/m-p/110247#M3004</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I am working on a CI CD blueprint for developers, using which developers can create their bundle for jobs / workflows and then create a volume to which they will upload a wheel file or a jar file which will be used as a dependency in their notebook. I don't want to use Python SDK or any such programmatic way to upload that file to a volume as described here&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/databricks/files/volumes#manage-files-in-volumes-from-external-tools" target="_blank"&gt;https://learn.microsoft.com/en-us/azure/databricks/files/volumes#manage-files-in-volumes-from-external-tools&lt;/A&gt;. I want the file to be uploaded to the volume as part of the bundle deployment process so that when the bundle runs, it can reference that file in the volume at runtime.&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;P&gt;Venu&lt;/P&gt;</description>
    <pubDate>Fri, 14 Feb 2025 17:10:18 GMT</pubDate>
    <dc:creator>Venugopal</dc:creator>
    <dc:date>2025-02-14T17:10:18Z</dc:date>
    <item>
      <title>How to upload a file to Unity catalog volume using databricks asset bundles</title>
      <link>https://community.databricks.com/t5/administration-architecture/how-to-upload-a-file-to-unity-catalog-volume-using-databricks/m-p/110247#M3004</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I am working on a CI CD blueprint for developers, using which developers can create their bundle for jobs / workflows and then create a volume to which they will upload a wheel file or a jar file which will be used as a dependency in their notebook. I don't want to use Python SDK or any such programmatic way to upload that file to a volume as described here&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/databricks/files/volumes#manage-files-in-volumes-from-external-tools" target="_blank"&gt;https://learn.microsoft.com/en-us/azure/databricks/files/volumes#manage-files-in-volumes-from-external-tools&lt;/A&gt;. I want the file to be uploaded to the volume as part of the bundle deployment process so that when the bundle runs, it can reference that file in the volume at runtime.&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;P&gt;Venu&lt;/P&gt;</description>
      <pubDate>Fri, 14 Feb 2025 17:10:18 GMT</pubDate>
      <guid>https://community.databricks.com/t5/administration-architecture/how-to-upload-a-file-to-unity-catalog-volume-using-databricks/m-p/110247#M3004</guid>
      <dc:creator>Venugopal</dc:creator>
      <dc:date>2025-02-14T17:10:18Z</dc:date>
    </item>
    <item>
      <title>Re: How to upload a file to Unity catalog volume using databricks asset bundles</title>
      <link>https://community.databricks.com/t5/administration-architecture/how-to-upload-a-file-to-unity-catalog-volume-using-databricks/m-p/119776#M3381</link>
      <description>&lt;P&gt;Hi Venugopal,&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am having similar requirement. Did you get any solution to handle this?&lt;/P&gt;</description>
      <pubDate>Tue, 20 May 2025 14:33:23 GMT</pubDate>
      <guid>https://community.databricks.com/t5/administration-architecture/how-to-upload-a-file-to-unity-catalog-volume-using-databricks/m-p/119776#M3381</guid>
      <dc:creator>binitchowdhary</dc:creator>
      <dc:date>2025-05-20T14:33:23Z</dc:date>
    </item>
    <item>
      <title>Re: How to upload a file to Unity catalog volume using databricks asset bundles</title>
      <link>https://community.databricks.com/t5/administration-architecture/how-to-upload-a-file-to-unity-catalog-volume-using-databricks/m-p/131977#M4039</link>
      <description>&lt;H2&gt;Deploying Databricks Asset Bundle Artifacts to Unity Catalog Volumes&lt;/H2&gt;&lt;P class=""&gt;Use Databricks Asset Bundle with a deployment job that leverages shell commands to copy artifacts from workspace bundle paths to Unity Catalog Volumes.&lt;/P&gt;&lt;H2&gt;Configuration&lt;/H2&gt;&lt;H3&gt;databricks.yml&lt;/H3&gt;&lt;DIV class=""&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;bundle&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class=""&gt;name&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; artifact&lt;SPAN class=""&gt;-&lt;/SPAN&gt;deployer&lt;/SPAN&gt;
&lt;SPAN&gt;&lt;SPAN class=""&gt;targets&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class=""&gt;dev&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;workspace&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;      &lt;SPAN class=""&gt;host&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"https://your-workspace.cloud.databricks.com"&lt;/SPAN&gt;
&lt;/SPAN&gt;    
&lt;SPAN&gt;    &lt;SPAN class=""&gt;variables&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;      &lt;SPAN class=""&gt;catalog&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"your_catalog"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;      &lt;SPAN class=""&gt;schema&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"your_schema"&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;      &lt;SPAN class=""&gt;volume&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"artifacts"&lt;/SPAN&gt;
&lt;/SPAN&gt;    
&lt;SPAN&gt;    &lt;SPAN class=""&gt;resources&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;      &lt;SPAN class=""&gt;jobs&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;        &lt;SPAN class=""&gt;deploy_artifacts&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;          &lt;SPAN class=""&gt;name&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"Deploy Artifacts to Volume"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;          &lt;SPAN class=""&gt;tasks&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;            &lt;SPAN class=""&gt;-&lt;/SPAN&gt; &lt;SPAN class=""&gt;task_key&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"copy_to_volume"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;              &lt;SPAN class=""&gt;notebook_task&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;                &lt;SPAN class=""&gt;notebook_path&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"./notebooks/deploy"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;                &lt;SPAN class=""&gt;base_parameters&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;                  &lt;SPAN class=""&gt;catalog&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; $&lt;SPAN class=""&gt;{&lt;/SPAN&gt;var.catalog&lt;SPAN class=""&gt;}&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;                  &lt;SPAN class=""&gt;schema&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; $&lt;SPAN class=""&gt;{&lt;/SPAN&gt;var.schema&lt;SPAN class=""&gt;}&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;                  &lt;SPAN class=""&gt;volume&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; $&lt;SPAN class=""&gt;{&lt;/SPAN&gt;var.volume&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;H2&gt;Deployment Notebook (notebooks/deploy.ipynb)&lt;/H2&gt;&lt;H3&gt;Cell 1: Setup Parameters&lt;/H3&gt;&lt;DIV class=""&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;# Create widgets for parameters&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;dbutils&lt;SPAN class=""&gt;.&lt;/SPAN&gt;widgets&lt;SPAN class=""&gt;.&lt;/SPAN&gt;text&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"catalog"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;""&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;dbutils&lt;SPAN class=""&gt;.&lt;/SPAN&gt;widgets&lt;SPAN class=""&gt;.&lt;/SPAN&gt;text&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"schema"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;""&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;dbutils&lt;SPAN class=""&gt;.&lt;/SPAN&gt;widgets&lt;SPAN class=""&gt;.&lt;/SPAN&gt;text&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"volume"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;""&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;/SPAN&gt;
&lt;SPAN&gt;&lt;SPAN class=""&gt;# Get parameter values&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;catalog_name &lt;SPAN class=""&gt;=&lt;/SPAN&gt; dbutils&lt;SPAN class=""&gt;.&lt;/SPAN&gt;widgets&lt;SPAN class=""&gt;.&lt;/SPAN&gt;get&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"catalog"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;schema_name &lt;SPAN class=""&gt;=&lt;/SPAN&gt; dbutils&lt;SPAN class=""&gt;.&lt;/SPAN&gt;widgets&lt;SPAN class=""&gt;.&lt;/SPAN&gt;get&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"schema"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;volume_name &lt;SPAN class=""&gt;=&lt;/SPAN&gt; dbutils&lt;SPAN class=""&gt;.&lt;/SPAN&gt;widgets&lt;SPAN class=""&gt;.&lt;/SPAN&gt;get&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"volume"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;/SPAN&gt;
&lt;SPAN&gt;&lt;SPAN class=""&gt;print&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;f"Target: &lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;catalog_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;schema_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;volume_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;H3&gt;Cell 2: Create Volume and Directory Structure&lt;/H3&gt;&lt;DIV class=""&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;# Create Unity Catalog Volume&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;spark&lt;SPAN class=""&gt;.&lt;/SPAN&gt;sql&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;f"CREATE VOLUME IF NOT EXISTS &lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;catalog_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;schema_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;volume_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;/SPAN&gt;
&lt;SPAN&gt;&lt;SPAN class=""&gt;# Create directory structure&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;dbutils&lt;SPAN class=""&gt;.&lt;/SPAN&gt;fs&lt;SPAN class=""&gt;.&lt;/SPAN&gt;mkdirs&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;f"/Volumes/&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;catalog_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;/&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;schema_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;/&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;volume_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;/wheels/"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;dbutils&lt;SPAN class=""&gt;.&lt;/SPAN&gt;fs&lt;SPAN class=""&gt;.&lt;/SPAN&gt;mkdirs&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;f"/Volumes/&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;catalog_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;/&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;schema_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;/&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;volume_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;/notebooks/"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;/SPAN&gt;
&lt;SPAN&gt;&lt;SPAN class=""&gt;print&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"Volume and directories created successfully"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;H3&gt;Cell 3: Define Paths and Environment Variables&lt;/H3&gt;&lt;DIV class=""&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;# Get current user and define paths&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;username &lt;SPAN class=""&gt;=&lt;/SPAN&gt; dbutils&lt;SPAN class=""&gt;.&lt;/SPAN&gt;notebook&lt;SPAN class=""&gt;.&lt;/SPAN&gt;entry_point&lt;SPAN class=""&gt;.&lt;/SPAN&gt;getDbutils&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;notebook&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;getContext&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;userName&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;get&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;bundle_path &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;f"/Workspace/Users/&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;username&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;/.bundle/your_repo_name/dev/files"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;volume_path &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;f"/Volumes/&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;catalog_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;/&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;schema_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;/&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;volume_name&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;
&lt;/SPAN&gt;
&lt;SPAN&gt;&lt;SPAN class=""&gt;# Set environment variables for shell access&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;import&lt;/SPAN&gt; os&lt;/SPAN&gt;&lt;SPAN&gt;os&lt;SPAN class=""&gt;.&lt;/SPAN&gt;environ&lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;'BUNDLE_PATH'&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; bundle_path&lt;/SPAN&gt;&lt;SPAN&gt;os&lt;SPAN class=""&gt;.&lt;/SPAN&gt;environ&lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;'VOLUME_PATH'&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; volume_path&lt;/SPAN&gt;
&lt;SPAN&gt;&lt;SPAN class=""&gt;print&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;f"Bundle Path: &lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;bundle_path&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;print&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;f"Volume Path: &lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;volume_path&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;H3&gt;Cell 4: Copy Artifacts Using Shell Commands&lt;/H3&gt;&lt;DIV class=""&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;%%sh&lt;/SPAN&gt;
&lt;SPAN&gt;&lt;SPAN class=""&gt;echo&lt;/SPAN&gt; &lt;SPAN class=""&gt;"Copying from: &lt;/SPAN&gt;&lt;SPAN class=""&gt;$BUNDLE_PATH&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;echo&lt;/SPAN&gt; &lt;SPAN class=""&gt;"Copying to: &lt;/SPAN&gt;&lt;SPAN class=""&gt;$VOLUME_PATH&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;
&lt;/SPAN&gt;
&lt;SPAN&gt;&lt;SPAN class=""&gt;# Copy notebooks&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;[&lt;/SPAN&gt; -d &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;$BUNDLE_PATH&lt;/SPAN&gt;&lt;SPAN class=""&gt;/notebooks"&lt;/SPAN&gt; &lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt; &lt;SPAN class=""&gt;then&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;cp&lt;/SPAN&gt; -r &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;$BUNDLE_PATH&lt;/SPAN&gt;&lt;SPAN class=""&gt;/notebooks/"&lt;/SPAN&gt;* &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;$VOLUME_PATH&lt;/SPAN&gt;&lt;SPAN class=""&gt;/notebooks/"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;echo&lt;/SPAN&gt; &lt;SPAN class=""&gt;"Notebooks copied successfully"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;else&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;echo&lt;/SPAN&gt; &lt;SPAN class=""&gt;"Notebooks directory not found at &lt;/SPAN&gt;&lt;SPAN class=""&gt;$BUNDLE_PATH&lt;/SPAN&gt;&lt;SPAN class=""&gt;/notebooks"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;fi&lt;/SPAN&gt;
&lt;/SPAN&gt;
&lt;SPAN&gt;&lt;SPAN class=""&gt;# Copy Python wheels&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;[&lt;/SPAN&gt; -d &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;$BUNDLE_PATH&lt;/SPAN&gt;&lt;SPAN class=""&gt;/dist"&lt;/SPAN&gt; &lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt; &lt;SPAN class=""&gt;then&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;cp&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;$BUNDLE_PATH&lt;/SPAN&gt;&lt;SPAN class=""&gt;/dist/"&lt;/SPAN&gt;*.whl &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;$VOLUME_PATH&lt;/SPAN&gt;&lt;SPAN class=""&gt;/wheels/"&lt;/SPAN&gt; &lt;SPAN class=""&gt;2&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;gt;&lt;/SPAN&gt;/dev/null &lt;SPAN class=""&gt;&amp;amp;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class=""&gt;\&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;echo&lt;/SPAN&gt; &lt;SPAN class=""&gt;"Python wheels copied successfully"&lt;/SPAN&gt; &lt;SPAN class=""&gt;||&lt;/SPAN&gt; &lt;SPAN class=""&gt;\&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;echo&lt;/SPAN&gt; &lt;SPAN class=""&gt;"No wheel files found in &lt;/SPAN&gt;&lt;SPAN class=""&gt;$BUNDLE_PATH&lt;/SPAN&gt;&lt;SPAN class=""&gt;/dist"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;else&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;echo&lt;/SPAN&gt; &lt;SPAN class=""&gt;"Dist directory not found at &lt;/SPAN&gt;&lt;SPAN class=""&gt;$BUNDLE_PATH&lt;/SPAN&gt;&lt;SPAN class=""&gt;/dist"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;fi&lt;/SPAN&gt;
&lt;/SPAN&gt;
&lt;SPAN&gt;&lt;SPAN class=""&gt;# Verify deployment&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;echo&lt;/SPAN&gt; &lt;SPAN class=""&gt;""&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;echo&lt;/SPAN&gt; &lt;SPAN class=""&gt;"Deployment Summary:"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;echo&lt;/SPAN&gt; &lt;SPAN class=""&gt;"Notebooks in volume:"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;find&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;$VOLUME_PATH&lt;/SPAN&gt;&lt;SPAN class=""&gt;/notebooks/"&lt;/SPAN&gt; -type f &lt;SPAN class=""&gt;2&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;gt;&lt;/SPAN&gt;/dev/null &lt;SPAN class=""&gt;|&lt;/SPAN&gt; &lt;SPAN class=""&gt;wc&lt;/SPAN&gt; -l &lt;SPAN class=""&gt;||&lt;/SPAN&gt; &lt;SPAN class=""&gt;echo&lt;/SPAN&gt; &lt;SPAN class=""&gt;"0"&lt;/SPAN&gt;
&lt;/SPAN&gt;
&lt;SPAN&gt;&lt;SPAN class=""&gt;echo&lt;/SPAN&gt; &lt;SPAN class=""&gt;"Wheels in volume:"&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;find&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;$VOLUME_PATH&lt;/SPAN&gt;&lt;SPAN class=""&gt;/wheels/"&lt;/SPAN&gt; -type f &lt;SPAN class=""&gt;2&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;gt;&lt;/SPAN&gt;/dev/null &lt;SPAN class=""&gt;|&lt;/SPAN&gt; &lt;SPAN class=""&gt;wc&lt;/SPAN&gt; -l &lt;SPAN class=""&gt;||&lt;/SPAN&gt; &lt;SPAN class=""&gt;echo&lt;/SPAN&gt; &lt;SPAN class=""&gt;"0"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;H2&gt;Key Technical Points&lt;/H2&gt;&lt;OL class=""&gt;&lt;LI&gt;&lt;STRONG&gt;Parameter Flow&lt;/STRONG&gt;: databricks.yml variables → base_parameters → notebook widgets → Python variables&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Path Access&lt;/STRONG&gt;: Bundle artifacts at /Workspace/Users/{user}/.bundle/{repo}/dev/files/ are accessible via shell but not dbutils.fs&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Environment Bridge&lt;/STRONG&gt;: os.environ passes Python variables to shell commands&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Volume Paths&lt;/STRONG&gt;: Unity Catalog Volumes accessible at /dbfs/Volumes/{catalog}/{schema}/{volume}/&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;You can replace whl with JAR file. Reason for not using programatically is the shell commands can access /Workspace paths directly, while Python file operations and dbutils.fs cannot. We still need to tweak the shell script a bit to fetch latest whl version which is an enhancement, works for now! And, yeah, this simple job can be run on serverless, so the deployment is instant (&amp;lt; 2 min) and doesnt need 4-5 min cluster bootup time to wait, so no need to use job cluster here.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 15 Sep 2025 12:37:13 GMT</pubDate>
      <guid>https://community.databricks.com/t5/administration-architecture/how-to-upload-a-file-to-unity-catalog-volume-using-databricks/m-p/131977#M4039</guid>
      <dc:creator>chanukya-pekala</dc:creator>
      <dc:date>2025-09-15T12:37:13Z</dc:date>
    </item>
    <item>
      <title>Re: How to upload a file to Unity catalog volume using databricks asset bundles</title>
      <link>https://community.databricks.com/t5/administration-architecture/how-to-upload-a-file-to-unity-catalog-volume-using-databricks/m-p/131980#M4040</link>
      <description>&lt;P&gt;With this setup, users who are entitled to access the catalog will have the access to use the volume, if permissions are set in this way. And, users will be able to utilize the notebook and we need to provide documentation either to clone the notebook and run or directly run (depends on usecase). But yeah, most importantly developers will be able to reference to the volume uploaded to the catalog and install to specific job or adhoc clusters.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 15 Sep 2025 12:42:17 GMT</pubDate>
      <guid>https://community.databricks.com/t5/administration-architecture/how-to-upload-a-file-to-unity-catalog-volume-using-databricks/m-p/131980#M4040</guid>
      <dc:creator>chanukya-pekala</dc:creator>
      <dc:date>2025-09-15T12:42:17Z</dc:date>
    </item>
  </channel>
</rss>

