Skip to main content

PyStarburst DataFrame API

PyStarburst DataFrame API allows you to query and transform data in Starburst products in a data pipeline without having to download the data locally.

Documentation

See the PyStarburst API documentation and the examples repository.

Getting started

Install pystarburst

pip install pystarburst

Connect to a Starburst server

The parameters are the same connect parameters as in Trino Python Client.

from pystarburst import Session

connection_parameters = {
    "host": "localhost",
    "port": 8080,
    "user": "admin",
    "catalog": "tpch",
    "schema": "tiny"
}

session = Session.builder.configs(connection_parameters).create()

Using SQL

from pystarburst import Session

session = Session.builder.configs({ ... }).create()

session.sql("SELECT 1 as a").show()

Querying a table

from pystarburst import Session

session = Session.builder.configs({ ... }).create()

df = session.table("nation")
print(df.schema)
df.show()

Filtering a data frame

from pystarburst import Session

session = Session.builder.configs({ ... }).create()

df = session.table("nation")
df.filter(df.col("regionkey") == 0).show()

Joining data frames

from pystarburst import Session

session = Session.builder.configs({ ... }).create()

df = session.table("nation")
df.filter(df.col("regionkey") == 0).show()

Aggregation

from pystarburst import Session
from pystarburst.functions import col

session = Session.builder.configs({ ... }).create()
df = session.table("nation")
df.agg((col("regionkey"), "max"), (col("regionkey"), "avg")).show()

Arrow spooling

When configured with Arrow encoding, DataFrame methods to_arrow_batches(), to_arrow_table() and to_pandas() use Arrow IPC spooling with parallel segment decoding for significantly faster transfer of large result sets.

pip install pystarburst[pyarrow]
from pystarburst import Session

session = Session.builder.configs({
    ...
    "encoding": "arrow-preview+zstd",
}).create()

pandas_df = session.sql("SELECT * FROM nation").to_pandas()
# or
arrow_reader = session.sql("SELECT * FROM nation").to_arrow_batches()
# or
arrow_table = session.sql("SELECT * FROM nation").to_arrow_table()

Of the three methods: to_arrow_batches(), to_arrow_table() and to_pandas(), to_arrow_batches() is the most memory efficient, as it returns pyarrow.RecordBatchReader that can iterate over record batches without materializing the entire result set in memory.

Arrow encoding is used only for those three methods. All other operations (collect(), show(), etc.) use the default encoding.

Release files for pystarburst 0.15.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for pystarburst 0.15.0
File Interpreter ABI Platform
pystarburst-0.15.0-py3-none-any.whl Python 3 none any Details

Release files / pystarburst-0.15.0-py3-none-any.whl

Download URL pystarburst-0.15.0-py3-none-any.whl
Size 142.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bd5adf4fdbe98013bfdd02e6d8b947c6c0b0c6d4aaa597cfa4fbc10a387b0653
BLAKE2b-256 checksum
How to use checksums
b412bcfed87a97e6f5aab63828974d173d0e711637c22c0b5d72c106fc1819e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

0.16.0

1 release file

This release

0.15.0 This release

1 release file

0.14.1

1 release file

0.14.0

1 release file

0.13.0

1 release file

0.12.1

1 release file

0.12.0

1 release file

0.11.0

1 release file

0.10.0

1 release file

0.9.0

1 release file

0.8.0

1 release file

0.7.0

1 release file

0.6.3

1 release file

0.6.2

1 release file

0.6.1

1 release file

0.6.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page