> For the complete documentation index, see [llms.txt](https://documentation.immuta.com/saas/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.immuta.com/saas/govern/secure-your-data/projects-and-purpose-based-access-control/write-index/reference-guides/project-workspaces.md).

# Writing to Projects

{% hint style="warning" %}
**Deprecation notice**

Support for this feature has been deprecated. See the [Deprecations page](/saas/releases/deprecations.md) for EOL dates.
{% endhint %}

With [equalization enabled](/saas/govern/secure-your-data/projects-and-purpose-based-access-control/equalized-access/equalization.md), project users can create project workspaces for [Databricks](#databricks-project-workspaces) where users can view and write data.

Using [Immuta projects](/saas/govern/secure-your-data/projects-and-purpose-based-access-control/purpose-index/reference-guides/projects.md) and [project equalization](/saas/govern/secure-your-data/projects-and-purpose-based-access-control/equalized-access/equalization.md), Databricks Spark project workspaces are a space where every project member has the same level of access to data. This equalized access allows collaboration without worries about data leaks. Not only can project members collaborate on data, but they can also write protected data to the project.

Users will only be able to access the directory and database created for the workspace when acting under the project. The Immuta Spark SQL Session will apply policies to the data, so any data written to the workspace will already be compliant with the restrictions of the equalized project, where all members see data at the same level of access. When users are ready to write data to the project, they should use the SparkSQL session to copy data into the workspace.

## Databricks project workspace workflow

1. An Immuta user with the `CREATE_PROJECT` permission [creates a new project](/saas/govern/secure-your-data/projects-and-purpose-based-access-control/purpose-index/how-to-guides/create-project-tutorial.md) with Databricks data sources.
2. The Immuta project owner [enables project equalization](/saas/govern/secure-your-data/projects-and-purpose-based-access-control/equalized-access/manage-equalization.md) which balances every project members’ access to the data to be the same.
3. The Immuta project owner [creates a Databricks project workspace](/saas/govern/secure-your-data/projects-and-purpose-based-access-control/write-index/how-to-guides/create-and-manage-project-workspaces.md) which automatically generates a subfolder in the root path specified by the application admin and remote database associated with the project.
4. The Immuta project members query equalized data within the context of the project, collaborate, and write data, all within Databricks.

## Root directory details

* Immuta only supports a single root location, so all projects will write to a subdirectory under this single root location.
* If an administrator changes the default directory, the Immuta user must have full access to that directory. Once any workspace is created, this directory can no longer be modified.
* Administrators can place a configuration value in the cluster configuration (`core-site.xml`) to mark that cluster as unavailable for use as a workspace.

## Read data

When acting in the workspace project, users can read data using calls like `spark.read.parquet("immuta:///some/path/to/a/workspace")`.

## Supported cloud providers

### Microsoft Azure

Immuta currently supports the `abfss` schema for Azure General Purpose V2 Storage Accounts. This includes support for Azure Data Lake Gen 2. When configuring Immuta workspaces for Databricks on Azure, the Azure Databricks workspace ID must be provided. More information about how to determine the workspace ID for your workspace can be found in the [Databricks documentation](https://docs.databricks.com/workspace/workspace-details.html). It is also important that the additional configuration file is included on any clusters that wish to use Immuta workspaces with credentials for the container in Azure Storage that contains Immuta workspaces.

### Google Cloud Platform

Immuta currently supports the `gs` schema for Google Cloud Platform. The primary difference between Databricks on Google Cloud Platform and Databricks on AWS or Azure is that it is deployed to Google Kubernetes Engine. Databricks handles automatically provisioning and auto scaling drivers and executors to pods on Google Kubernetes Engine, so Google Cloud Platform admin users can view and monitor the Google Kubernetes resources in the Google Cloud Platform.

## Caveats and limitations

* **Stage Immuta installation artifacts in Google Storage, not DBFS**: The DBFS FUSE mount is unavailable, and the `IMMUTA_SPARK_DATABRICKS_DBFS_MOUNT_ENABLED` property cannot be set to `true` to expose the DBFS FUSE mount.
* **Stage the Immuta init script in Google Storage**: Init scripts in DBFS are not supported.
* **Stage third-party libraries in DBFS**: Installing libraries from Google Storage is not supported.
* **Install third-party libraries as cluster-scoped**: Notebook-scoped libraries have limited support. See the [Databricks trusted libraries section](/saas/configuration/integrations/databricks/databricks-spark/reference-guides/databricks/customizing-the-integration.md#databricks-trusted-libraries) for more details.
* **Maven library installation is only supported in Databricks Runtime 8.1+.**
* **`/databricks/spark/conf/spark-env.sh` is mounted as read-only**:
  * **Set sensitive Immuta configuration values directly in `immuta_conf.xml`:** Do not use environment variables to set sensitive Immuta properties. Immuta is unable to edit the `spark-env.sh` file because it is read-only; therefore, remove environment variables and keep them from being visible to end users.
  * **Use `/immuta-scratch` directly**: The `IMMUTA_LOCAL_SCRATCH_DIR` property is unavailable.
* **Allow the Kubernetes resource to spin down before submitting another job**: Job clusters with init scripts fail on subsequent runs.
* **The DBFS CLI is unavailable**: Other non-DBFS Databricks CLI functions will still work as expected.

## Supported metastore providers for Databricks

To write data to a table in Databricks through an Immuta workspace, use one of the following supported provider types for your table format:

* `avro`
* `csv`
* `delta`
* `orc`
* `parquet`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://documentation.immuta.com/saas/govern/secure-your-data/projects-and-purpose-based-access-control/write-index/reference-guides/project-workspaces.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
