Skip to content

DbfsFile

laktory.models.resources.databricks.DbfsFile ¤

Bases: RenderableFileMixin, DbfsFileBase

Databricks DBFS File

Examples:

import io

from laktory import models

file_yaml = '''
source: ./data/stock_prices/prices.json
dirpath: stock_prices/
'''
file = models.resources.databricks.DbfsFile.model_validate_yaml(
    io.StringIO(file_yaml)
)
print(file.path)
# > /stock_prices/prices.json
References
BASE DESCRIPTION
content_base64

Encoded file contents. Conflicts with source. Use of content_base64 is discouraged, as it's increasing memory footprint of Terraform state and should only be used in exceptional circumstances, like creating a data pipeline configuration file

TYPE: str | None | VariableType DEFAULT: None

md5

TYPE: str | None | VariableType DEFAULT: None

LAKTORY DESCRIPTION
access_controls

List of file access controls

TYPE: list[AccessControl | VariableType] | VariableType DEFAULT: []

dirpath

Workspace directory inside rootpath in which the DBFS file is deployed. Used only if path is not specified.

TYPE: str | VariableType DEFAULT: None

path_

DBFS filepath for the file. Overwrite dirpath.

TYPE: str | VariableType DEFAULT: None

render_vars

If True, resolve ${vars.x} / ${{ expr }} placeholders in this file's content before upload. Resolved content is staged under settings.build_root; the staged copy is (re)written whenever Stack.build() runs (which preview, deploy, destroy and build all trigger).

TYPE: bool DEFAULT: False

source_

The full absolute path to the file. Conflicts with content_base64

TYPE: str | VariableType DEFAULT: None

METHOD DESCRIPTION
build

Render ${vars.x}/${{ expr }} placeholders in the file content

check_staged

Raise a clear error if this resource is configured for variable

ATTRIBUTE DESCRIPTION
filename

File filename

TYPE: str

filename property ¤

File filename

build(vars=None) ¤

Render ${vars.x}/${{ expr }} placeholders in the file content and stage the result under settings.build_root, if render_vars is True. No-op otherwise.

Source code in laktory/models/resources/databricks/dbfsfile.py
112
113
114
115
116
117
118
119
def build(self, vars: dict = None):
    """
    Render `${vars.x}`/`${{ expr }}` placeholders in the file content
    and stage the result under `settings.build_root`, if `render_vars`
    is `True`. No-op otherwise.
    """
    if self.render_vars:
        self._render_to_staged_path(self.source_, self.source, vars=vars)

check_staged() ¤

Raise a clear error if this resource is configured for variable rendering but its staged copy hasn't been written yet (i.e. .build() hasn't run). Guards against programmatic use that bypasses Stack.build() (the normal CLI flow always calls it before dumping resources).

Source code in laktory/models/resources/databricks/_renderablefile.py
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
def check_staged(self):
    """
    Raise a clear error if this resource is configured for variable
    rendering but its staged copy hasn't been written yet (i.e.
    `.build()` hasn't run). Guards against programmatic use that
    bypasses `Stack.build()` (the normal CLI flow always calls it
    before dumping resources).
    """
    if not self.render_vars:
        return
    staged = self._rendered_field_value
    if staged and not Path(staged).exists():
        raise RuntimeError(
            f"'{staged}' has not been rendered yet. Run `laktory build` "
            "(or `preview`/`deploy`, which trigger it automatically) "
            "before this resource is used."
        )

laktory.models.resources.databricks.dbfsfile.DbfsFileLookup ¤

Bases: ResourceLookup

PARAMETER DESCRIPTION
limit_file_size

Do not load content for files larger than 4MB.

TYPE: bool | VariableType DEFAULT: True

path

Path on DBFS for the file from which to get content.

TYPE: str | VariableType