Skip to main content
Version: 1.7.1

DatabricksDestination

class DatabricksDestination(
host_url: str,
token: str | Secret,
tables: list[str] | str,
volume: str,
catalog: str | None = None,
schema: str | None = None,
warehouse: str | None = None,
warehouse_id: str | None = None,
if_table_exists: IfTableExistStrategySpec = 'append',
schema_strategy: SchemaStrategySpec = 'update',
**kwargs,
)

Bases: DestinationPlugin

Categories: destination

Databricks based data outputs.

Initializes the DatabricksDestination with the configuration desired to store the data.

Parameters

parameter
host_url

Databricks URL

parameter
token

Databricks Personal Account Token (PAT). The user owning the PAT requires ‘USE CATALOG’, ‘USE SCHEMA’, ‘READ VOLUME’ & ‘WRITE VOLUME’ privileges.

parameter
tables

Tables to be created in Databricks. Each table name provided must either be fully qualified in the form of ‘catalog.schema.table_name’ or have the information provided through the ‘catalog’ or the ‘schema’ parameters. For example, if a table of the form ‘schema.table_name’ is provided, the ‘catalog’ parameter must also be provided. If a table of the form ‘table_name’ is provided, both ‘catalog’ and ‘schema’ must be provided.

parameter
volume

Name of the Databricks volume. The connector uses an existing Databricks managed volume. The files written to the volume are deleted after connector finishes writing the data to the Databricks table.

parameter
catalog

Catalog name (optional, can be null if the table name has the catalog name.)

parameter
schema

Schema name (optional, can be null if the table name has the schema name.)

parameter
warehouse

Warehouse name (use either this or warehouse_id) that will be used for uploading data to Databricks tables. The user has to have privileges to use the warehouse.

parameter
warehouse_id

Warehouse Id. Use null if warehouse name is provided.

parameter
if_table_exists

This is an optional property to define the strategy to follow when the table already exists. ‘replace’ will create overwrite the existing table, and ‘append’ will append to the existing data in the table. Defaults to ‘append’.

parameter
schema_strategy

The is to mention the strategy to follow when appending to a table with an existing schema. ‘update’ will update the schema with the possible new columns that might exist in the TableFrame. ‘strict’ will not modify the schema, and will fail if there is any difference.

Properties

property
host_urlstr

property
if_table_existsIfTableExistStrategySpec

str: The strategy to follow when the table already exists.

property
schema_strategySchemaStrategySpec

str: The strategy to follow when appending to a table with an existing schema.

property
tablesList[str]

property
tokenSecret

Methods

chunk
def chunk(working_dir: str, *results: LazyFrame | None) -> List[None | str]

Trigger the exporting of the data to local parquet chunks. This method will receive the resulting data from the user function and must store it in the local system as parquet files, using the working_dir. Note: This method should not materialize the data, it should only store it in the local system.

Parameters:

parameter
working_dirstr

The folder where any files generated must be stored (this refers to temporary files that will be deleted after the execution of the plugin, not the final destination of the data)

parameter
results

The data to be exported. It is a list of polars LazyFrames or None.

Returns:

A list of the intermediate files created

stream
def stream(working_dir: str, *results: List[LazyFrame | None] | LazyFrame | None)

Trigger the exporting of the data. This method will receive the resulting data from the user function and must store it in the desired location. Note: this method might materialize the data provided in a single chunk generated by the chunk function if invoked, so chunks should be of an appropriate size.

Parameters:

parameter
working_dirstr

The folder where any intermediate files generated must be stored (this refers to temporary files that will be deleted after the execution of the plugin, not the final destination of the data)

parameter
results

The data to be exported. It is a list of polars LazyFrames or None.

Returns:

None

write
def write(files)

This method is used to write the files to the databricks. It is called from the stream method, and it is not intended to be called directly.