apache-beam
Apache Beam SDK for Python
What it is and what it does
Apache Beam provides a unified programming model for expressing both batch and streaming data-parallel processing pipelines. It abstracts the underlying execution engine through core concepts—PCollection (data), PTransform (computation), Pipeline (DAG), and PipelineRunner (execution target)—allowing the same code to run on multiple distributed backends. The Python SDK lets you write pipelines using familiar Python syntax and type hints, then execute them locally via DirectRunner or on production systems like Spark, Flink, or Google Cloud Dataflow without rewriting your logic.
The framework supports streaming pipelines, type safety through Python type hints, custom I/O connectors, and machine learning inference integration via the RunInference API for PyTorch and Scikit-learn models. It is designed for end users writing pipelines, SDK developers creating language-specific bindings, and runner developers implementing execution environments.
Use it for:
- Build ETL pipelines that transform and load data from multiple sources, running locally for testing and on Spark or Dataflow for production.
- Process real-time streaming data with windowing and aggregation, then replay the same logic on historical batch data.
- Develop machine learning feature engineering pipelines that preprocess data at scale and deploy to production runners.
- Create data validation and quality-check pipelines that run on streaming data or in batch mode on historical datasets.
- Build multi-language data processing workflows by combining transforms written in different Beam SDK languages in one pipeline.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Apache Beam is a unified framework for defining and executing batch and streaming data-parallel processing pipelines that can run on multiple distributed backends including Apache Flink, Apache Spark, Google Cloud Dataflow, and Hazelcast Jet.
Yes, if you need to write data pipelines that can run on multiple backends without code changes. The unified model and active maintenance make it solid for production ETL and streaming work. Be aware of medium install friction from 24 dependencies and the Python >=3.10 requirement. Not necessary if you only need simple single-machine data processing or are locked into a specific runner ecosystem.
Install
apache-beam on PyPI
pip
pip install apache-beamuv
uv add apache-beampoetry
poetry add apache-beamInstalling apache-beam
Before you install
Medium install friction due to 24 runtime dependencies including heavy packages like numpy, pyarrow, protobuf, and grpcio. Actively maintained with recent releases. Supports Python 3.10, 3.11, 3.12, 3.13, 3.14 across multiple platforms.
License in practice
Apache License, Version 2.0 is permissive; you can use this package freely in commercial and private projects, modify it, and distribute it with minimal restrictions.
Quickstart
pip install apache-beam
from apache_beam import Pipeline, Create, Map
with Pipeline() as p:
(p | Create([1, 2, 3]) | Map(lambda x: x * 2))
Requires Python >=3.10. Running pipelines on distributed backends requires additional setup and configuration of the target runner environment.
Verify before relying
- Whether the 24 runtime dependencies install cleanly together on all supported platforms without version conflicts.
- Performance characteristics and memory overhead when running large-scale pipelines locally versus on distributed backends.
- Specific limitations of Python streaming pipeline execution mentioned in the documentation.
Package facts
| License | Apache License, Version 2.0 (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 24 — cryptography, envoy-data-plane, fastavro, fasteners, grpcio, httplib2, jsonpickle, numpy, objsize, packaging, pillow, pymongo, proto-plus, protobuf, python-dateutil, pytz, requests, sortedcontainers, typing-extensions, zstandard, pyyaml, beartype, pyarrow, pyarrow-hotfix |
| Maintenance | actively maintained — 37 days since the last release |
| First released | |
| Downloads | 6,301,370/month — #1,934 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: apache_beam-2.75.0-cp310-cp310-macosx_11_0_arm64.whl; apache_beam-2.75.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; apache_beam-2.75.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; apache_beam-2.75.0-cp310-cp310-win32.whl; apache_beam-2.75.0-cp310-cp310-win_amd64.whl; apache_beam-2.75.0-cp311-cp311-macosx_11_0_arm64.whl; apache_beam-2.75.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; apache_beam-2.75.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; apache_beam-2.75.0-cp311-cp311-win32.whl; apache_beam-2.75.0-cp311-cp311-win_amd64.whl; apache_beam-2.75.0-cp312-cp312-macosx_11_0_arm64.whl; apache_beam-2.75.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; apache_beam-2.75.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; apache_beam-2.75.0-cp312-cp312-win32.whl; apache_beam-2.75.0-cp312-cp312-win_amd64.whl; apache_beam-2.75.0-cp313-cp313-macosx_11_0_arm64.whl; apache_beam-2.75.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; apache_beam-2.75.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; apache_beam-2.75.0-cp313-cp313-win32.whl; apache_beam-2.75.0-cp313-cp313-win_amd64.whl
Keywords: apache, beam
Tags
More Libraries packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
python-dateutilProvides parsing, arithmetic, and recurrence…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
apache-airflow-providers-apache-beamIntegrates Apache Beam data processing…
permissive · top 15,000 on PyPI
beam-nuggetsProvides Apache Beam transforms for reading and…
permissive · top 15,000 on PyPI
apache-flinkPython API for Apache Flink that builds…
permissive · top 15,000 on PyPI
apache-flink-librariesBundles Apache Flink's required libraries for…
permissive · top 15,000 on PyPI
koheesioKoheesio is a Python framework for building…
permissive · top 15,000 on PyPI
kfpKubeflow Pipelines is a Python SDK for…
permissive · top 5,000 on PyPI
hazelcast-python-clientHazelcast Python Client connects your Python…
permissive · top 15,000 on PyPI
sf-hamiltonThis package is a redirect to apache-hamilton;…
permissive · top 15,000 on PyPI
raydpRayDP runs Apache Spark on Ray and integrates…
permissive · top 15,000 on PyPI
jinaJina is a framework for building and deploying…
permissive · top 15,000 on PyPI