Skip to main content

An ETL and DataOps framework for building a lakehouse

Project description

Laktory

pypi test downloads versions license

An open-source DataOps and dataframe-centric ETL framework for building lakehouses. Use it standalone or extend your existing DABs setup with it.

laktory logo

Laktory is an all-in-one solution for defining both data transformations and Databricks resources. Imagine if Declarative Automation Bundles (DAB) supported any Databricks resources and offered a declarative approach to data transformations, that's essentially Laktory.

Deploy it standalone as your full Databricks DataOps platform, or add it alongside your existing DAB setup to manage pipeline definitions and the resources DAB doesn't cover.

This open-source framework streamlines the creation, deployment, and execution of data pipelines while adhering to essential DevOps practices such as version control, code reviews, and CI/CD integration. Powered by Narwhals, Laktory enables seamless transitions between Apache Spark, Polars, and other frameworks to perform data transformations reliably and at scale. Its modular and flexible design allows you to effortlessly combine SQL statements with DataFrame operations, reducing complexity and enhancing productivity.

what is laktory

Since Laktory pipelines are built on top of Narwhals, they can run in any environment that supports Python, from your local machine to a Kubernetes cluster. Pipelines can be orchestrated using tools like Apache Airflow or deployed directly as Databricks Jobs or Declarative Pipelines, offering both flexible and fully managed execution options.

But Laktory goes beyond data pipelines. It empowers you to define and deploy your entire Databricks data platform, from Unity Catalog and access grants to compute and quality monitoring. This empowers your data team to take full ownership of the solution, eliminating the need to juggle multiple technologies.

No more splitting ownership between Terraform for infrastructure and DAB for workflows. With Laktory, the team that builds the pipelines can own the stack end to end.

dataops

Help

See documentation for more details.

Installation

Install using

pip install laktory

For more installation options, see the Install section in the documentation.

A Basic Example

from laktory import models


node_brz = models.PipelineNode(
    name="brz_stock_prices",
    sources=[{
        "format": "PARQUET",
        "path": "./data/brz_stock_prices/"
    }],
    transformer={
        "nodes": []
    }
)

node_slv = models.PipelineNode(
    name="slv_stock_prices",
    sources=[{
        "node_name": "brz_stock_prices"
    }],
    sinks=[{
        "path": "./data/slv_stock_prices",
        "mode": "OVERWRITE",
        "format": "PARQUET",
    }],
    transformer={
        "nodes": [
            
            # SQL Transformation
            {
                "expr": """
                    SELECT
                      data.created_at AS created_at,
                      data.symbol AS symbol,
                      data.open AS open,
                      data.close AS close,
                      data.high AS high,
                      data.low AS low,
                      data.volume AS volume
                    FROM
                      {df}
                """   
            },
            
            # Spark Transformation
            {
                "func_name": "drop_duplicates",
                "func_kwargs": {
                    "subset": ["created_at", "symbol"]
                }
            },
        ]
    }
)

pipeline = models.Pipeline(
    name="stock_prices",
    nodes=[node_brz, node_slv],
)

pipeline.execute(spark=spark)

To get started with a more useful example, jump into the Quickstart.

Get Involved

Laktory is growing rapidly, and we'd love for you to be part of our journey! Here's how you can get involved:

  • Join the Community: Connect with fellow Laktory users and contributors on our Slack. Share ideas, ask questions, and collaborate!
  • Suggest Features or Report Issues: Have an idea for a new feature or encountering an issue? Let us know on GitHub Issues. Your feedback helps shape the future of Laktory!
  • Contribute to Laktory: Check out our contributing guide to learn how you can tackle issues and add value to the project.

A Lakehouse DataOps Template

A comprehensive template on how to deploy a lakehouse as code using Laktory is maintained here: https://github.com/okube-ai/lakehouse-as-code

In this template, 4 stacks are used to:

  • {cloud_provider}_infra: Deploy the required resources on your cloud provider
  • unity-catalog: Setup users, groups, catalogs, schemas and manage grants
  • workspace: Setup secrets, clusters and warehouses and common files/notebooks
  • workflows: The data workflows to build your lakehouse

Okube Company

okube logo

Okube is dedicated to building open source frameworks, known as the kubes, empowering businesses to build, deploy and operate highly scalable data platforms and AI models.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

laktory-0.12.2.tar.gz (751.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

laktory-0.12.2-py3-none-any.whl (916.8 kB view details)

Uploaded Python 3

File details

Details for the file laktory-0.12.2.tar.gz.

File metadata

  • Download URL: laktory-0.12.2.tar.gz
  • Upload date:
  • Size: 751.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.14

File hashes

Hashes for laktory-0.12.2.tar.gz
Algorithm Hash digest
SHA256 817f73abde1ffb8e2c95d02cc793f424dba38bf04ec7f133ba7653e53b2c2a3b
MD5 e1cd7ccc6f7da974649fc6b742f5902c
BLAKE2b-256 2e055014d0a58c365cc7dcbf42d4ee35fc822613c12aa237dd9ba23833d1a276

See more details on using hashes here.

File details

Details for the file laktory-0.12.2-py3-none-any.whl.

File metadata

  • Download URL: laktory-0.12.2-py3-none-any.whl
  • Upload date:
  • Size: 916.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.14

File hashes

Hashes for laktory-0.12.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f6838ac1bb08662384d4845057e9f2b461d93af22eaf4cc19cf63671cef0c7c2
MD5 2e937370ac0799c5973ae73c70a44bda
BLAKE2b-256 3adbf49ee6936270abbbfaae51ca126f86e4f61cb7274d20e33319f002d40c8a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page