Lance Plugin
This plugin adds a "lance" format to the Flyte DataFrame, so a Lance dataset can
be passed between tasks as a typed flyte.io.DataFrame.
Lance is a columnar, multimodal, streaming-optimized format. Its central property
is that a dataset is opened lazily and streamed on demand — sequentially for a
scan or by random access for shuffled training — without materializing the whole
thing in memory. This plugin preserves that: the primary decoder hands back a live
lance.LanceDataset handle you can stream from, not a materialized table.
The plugin registers:
lance.LanceDatasetas the default in-memory type for the "lance" format — encoded by copying the dataset to Flyte-managed storage, decoded lazily vialance.dataset(uri). This is the streaming path.pyarrow.Tablefor the "lance" format, for handing off an in-memory table. Becausepyarrow.Tablealready defaults to Parquet, this is the one case where you opt into Lance explicitly, withAnnotated[DataFrame, "lance"]. Encoded withlance.write_datasetand decoded eagerly withdataset.to_table(), which materializes the whole dataset — preferlance.LanceDatasetfor large or multimodal data.
Object-store credentials are threaded through Lance's storage_options from
Flyte's storage configuration, so remote reads and writes go through the same
credentials as the rest of Flyte.
To install the plugin, run the following command:
pip install flyteplugins-lance
Usage:
import tempfile
import flyte
import lance
import pyarrow as pa
# Installing the plugin in the task image is all that is needed. Flyte discovers
# it through the flyte.plugins.types entry point and registers the "lance" format
# automatically, so there is nothing to import in your task code.
env = flyte.TaskEnvironment(
name="lance-example",
image=flyte.Image.from_debian_base().with_pip_packages("flyteplugins-lance"),
)
@env.task
async def make() -> lance.LanceDataset:
uri = f"{tempfile.mkdtemp()}/example.lance"
lance.write_dataset(pa.table({"id": [1, 2, 3]}), uri)
return lance.dataset(uri) # encoded as "lance" — the default format for a LanceDataset
@env.task
async def consume(ds: lance.LanceDataset) -> int:
return ds.count_rows() # a live, streaming handle — no wrapper, no .open()
@env.task
async def main() -> int:
return await consume(await make())
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file flyteplugins_lance-2.5.16-py3-none-any.whl.
File metadata
- Download URL: flyteplugins_lance-2.5.16-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aad3f9a2ec5f0d72829ded9c64c587580a5cf004b8bd75ab4b560f524c2a8cfc
|
|
| MD5 |
d8c3ace4dc72253906a414829640cfb9
|
|
| BLAKE2b-256 |
65c013610ec1b2e357a4aaf4b32e4bd4d514eaa9820617e866d85a43159f0052
|