Sparkleframe
Project description
SparkleFrame implements the PySpark DataFrame API in order to enable running transformation pipelines directly on Polars Dataframe - no Spark clusters or dependencies required.
Apache Spark is designed for distributed, large-scale data processing, but it is not optimized for low-latency use cases. There are scenarios, however, where you need to quickly re-compute certain data—for example, regenerating features for a machine learning model in real time or near-real time.
SparkleFrame is great for:
- Users who want to run PySpark code quickly locally without the overhead of starting a Spark session
- Users who want to run PySpark DataFrame code without the complexity of using Spark for processing
- Useful for unit testing, feature prototyping, or serving small pipelines in microservices.
Documentation
Full documentation is available at https://flypipe.github.io/sparkleframe/.
Installation
pip install sparkleframe
Usage
SparkleFrame can be used in two ways:
- Directly importing the
sparkleframe.polarsdfpackage - Using the
activatefunction to allow for continuing to usepyspark.sqlbut have it use SparkleFrame behind the scenes.
Directly importing
If converting a PySpark pipeline, all pyspark.sql should be replaced with sparkleframe.polarsdf.
# PySpark import
# from pyspark.sql import SparkSession
# from pyspark.sql import functions as F
# from pyspark.sql.dataframe import DataFrame
# SparkleFrame import
from sparkleframe.polarsdf.session import SparkSession
from sparkleframe.polarsdf import functions as F
from sparkleframe.polarsdf.dataframe import DataFrame
Activating SparkleFrame
SparkleFrame can either replace pyspark imports or be used alongside them. To replace pyspark imports, use the activate function to set the engine to use.
from sparkleframe.activate import activate
# Activate SparkleFrame
activate()
from pyspark.sql import SparkSession
session = SparkSession.builder.getOrCreate()
SparkSession will now be a SparkleFrame Session object and everything will be run on Polars Dataframe directly.
SparkleFrame can also be directly imported which both maintains pyspark imports:
from sparkleframe.polarsdf.session import SparkSession
session = SparkSession.builder.getOrCreate()
Example Usage
from sparkleframe.activate import activate
# Activate SparkleFrame
activate()
from pyspark.sql import SparkSession
from pyspark.sql import functions as F
session = SparkSession.builder.getOrCreate()
df = session.createDataFrame(data=[{"col1": 1, "col2": 2}])
df = df.withColumn("col3", F.col("col2") + F.col("col1"))
>>> print(type(df))
<class 'sparkleframe.polarsdf.dataframe.DataFrame'>
>>> df.show()
shape: (1, 3)
┌──────┬──────┬──────┐
│ col1 ┆ col2 ┆ col3 │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞══════╪══════╪══════╡
│ 1 ┆ 2 ┆ 3 │
└──────┴──────┴──────┘
!!! note
- If you encounter any transformation that is not implemented, please open an [issue on GitHub](https://github.com/flypipe/sparkleframe/issues) so it can be prioritized.
You can learn more about the design motivation behind Sparkleframe in this
[discussion thread](https://github.com/eakmanrq/sparkleframe/issues/409).
Source Code
API code is available at https://github.com/flypipe/sparkleframe.
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
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 sparkleframe-0.2.3.tar.gz.
File metadata
- Download URL: sparkleframe-0.2.3.tar.gz
- Upload date:
- Size: 693.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.32.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c2e8323f8e8c3e83442733a58cbe09adfd84aa365063a98f906cc1bb714ccef4
|
|
| MD5 |
c26b0d9053fd048027f995a7c2434d45
|
|
| BLAKE2b-256 |
4a31a92ab0819bca6034913572e88f364712f210f0e047afb1e43f645288ffb5
|
File details
Details for the file sparkleframe-0.2.3-py3-none-any.whl.
File metadata
- Download URL: sparkleframe-0.2.3-py3-none-any.whl
- Upload date:
- Size: 43.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.32.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3699e1bfb93978acc108f2d3e35af06156817f02b7327335955af9d11c761229
|
|
| MD5 |
88a3cc6d8c1253a0345fa51fbcf70133
|
|
| BLAKE2b-256 |
a2a7aa03dfa02b5fa4dc5c6b5038e35308d3eca3392e3508bdc36f2ba2ddecb9
|