Apache Beam Documentation
This section provides in-depth conceptual information and reference material for the Beam Model, SDKs, and Runners:
Learn about the Beam Programming Model and the concepts common to all Beam SDKs and Runners.
- Read the Programming Guide, which introduces all the key Beam concepts.
- Learn about Beam’s execution model to better understand how pipelines execute.
- Visit Learning Resources for some of our favorite articles and talks about Beam.
- Design Your Pipeline by planning your pipeline’s structure, choosing transforms to apply to your data, and determining your input and output methods.
- Create Your Pipeline using the classes in the Beam SDKs.
- Test Your Pipeline to minimize debugging a pipeline’s remote execution.
Find status and reference information on all of the available Beam SDKs.
A Beam Runner runs a Beam pipeline on a specific (often distributed) data processing system.
- DirectRunner: Runs locally on your machine – great for developing, testing, and debugging.
- FlinkRunner: Runs on Apache Flink.
- SparkRunner: Runs on Apache Spark.
- DataflowRunner: Runs on Google Cloud Dataflow, a fully managed service within Google Cloud Platform.
- SamzaRunner: Runs on Apache Samza.
- NemoRunner: Runs on Apache Nemo.
- JetRunner: Runs on Hazelcast Jet.
- Twister2Runner: Runs on Twister2.
Choosing a Runner
Beam is designed to enable pipelines to be portable across different runners. However, given every runner has different capabilities, they also have different abilities to implement the core concepts in the Beam model. The Capability Matrix provides a detailed comparison of runner functionality.
Once you have chosen which runner to use, see that runner’s page for more information about any initial runner-specific setup as well as any required or optional
PipelineOptions for configuring its execution. You may also want to refer back to the Quickstart for Java, Python or Go for instructions on executing the sample WordCount pipeline.