skillfed

apache-beam

Apache Beam SDK for Python

apache-beam v2.75.0 6.3M downloads/30d#1,934 on PyPI
Permissive license Apache License, Version 2.0 Active released

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-beam

uv

uv add apache-beam

poetry

poetry add apache-beam

Installing 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

Intended Audience :: End Users/DesktopLicense :: OSI Approved :: Apache Software LicenseOperating System :: POSIX :: LinuxProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Topic :: Software Development :: LibrariesTopic :: Software Development :: Libraries :: Python Modules

Tags

batch and streaming data processingdistributed data pipeline frameworkdataflow programming modelparallel data processingmulti-runner pipeline executionETL pipeline frameworkdata transformation pipelines
data-pipelinedistributed-computingstreaming-batch

More Libraries packages