Data-refiner is an extensible data processing framework built on PySpark that enables users to build scalable data pipelines by composing reusable operators. With its built-in Operator Marketplace, users can discover, extend, and combine modular data processing components—like assembling LEGO bricks—to solve complex data tasks without writing complex Spark code.
Key Features
-
Composable Pipeline Architecture
Workflows are built by assembling modular operators. Pipelines can be reused, extended, swapped, or reconfigured to meet different business needs with minimal effort.
-
Reliable Pipeline Execution
Data-refiner provides built-in pipeline validation, execution management, and error handling mechanisms to improve reliability and simplify large-scale data processing.
-
Extensible Operator Ecosystem
Data-refiner provides an extensible operator system where users can develop custom operators in Python and share reusable components through the Operator Marketplace.
Quick Start
Before running, make sure your environment is properly configured to run Apache Spark.
Install
uv pip install data-refiner-pyspark
uv run dr_init && uv run dr_pack_resources
Run
import data_refiner
from pathlib import Path
from data_refiner import Runner
from pyspark.sql import SparkSession
spark = (
SparkSession.builder.master("local[1]")
.appName("data_refiner")
.enableHiveSupport()
.getOrCreate()
)
data_path = Path(data_refiner.__file__).parent / "tests/ops/test_data/mapper/html_content_extract_mapper"
pipeline = {
"read_whole_text_file": {
"op_name": "whole_text_file_reader",
"input_path": f"{str(data_path)}",
"output_df": "input.df",
},
"html_content_extract": {
"op_name": "html_content_extract_mapper",
"input_df": "input.df",
"output_df": "html_extract.df",
"field": "text",
"output_field": "content",
},
"language_identifier": {
"op_name": "language_identification_mapper",
"input_df": "html_extract.df",
"output_df": "language_identification.df",
"field": "content",
"output_field": "language",
"show": {"truncate":True},
}
}
Runner.from_dict(pipeline).run(spark=spark)
Operator Market
How to run
Community
👉 Join Discord server to:
- Ask questions
- Discuss development
- Share ideas and feedback
- New operator requirements
OR email to: sonderbanana@gmail.com
Metadata
Release files for data-refiner-pyspark 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| data_refiner_pyspark-1.0.0.tar.gz | 1.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| data_refiner_pyspark-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.2 MB
Release files / data_refiner_pyspark-1.0.0.tar.gz
| Download URL | data_refiner_pyspark-1.0.0.tar.gz |
|---|---|
| Size | 1.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
525e4e611c07d9d8c85d9342ba89448918f2f1898842dd43c970808449300d65
|
|
BLAKE2b-256 checksum How to use checksums |
ae30c365ffd086e7d0f34e5d98ebadebd430ddcca70de66bd0106e3d4103bf3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / data_refiner_pyspark-1.0.0-py3-none-any.whl
| Download URL | data_refiner_pyspark-1.0.0-py3-none-any.whl |
|---|---|
| Size | 1.7 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6b05b943e17a0c20d6e5569d70da7b5e522c342539e30601dc63782471a255be
|
|
BLAKE2b-256 checksum How to use checksums |
7b1db6e5200da3808d82bea2ed6cbae49c44a41587712791e02b22d6b2427980
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|