Apache Beam (incubating)
Apache Beam is an open source, unified programming model that you can use to create a data processing pipeline. You start by building a program that defines the pipeline using one of the open source Beam SDKs. The pipeline is then executed by one of Beam’s supported distributed processing back-ends, which include Apache Flink, Apache Spark, and Google Cloud Dataflow.
Beam is particularly useful for Embarrassingly Parallel data processing tasks, in which the problem can be decomposed into many smaller bundles of data that can be processed independently and in parallel. You can also use Beam for Extract, Transform, and Load (ETL) tasks and pure data integration. These tasks are useful for moving data between different storage media and data sources, transforming data into a more desirable format, or loading data onto a new system.
Apache Beam SDKs
The Beam SDKs provide a unified programming model that can represent and transform data sets of any size, whether the input is a finite data set from a batch data source, or an infinite data set from a streaming data source. The Beam SDKs use the same classes to represent both bounded and unbounded data, and the same transforms to operate on that data. You use the Beam SDK of your choice to build a program that defines your data processing pipeline.
Beam currently supports the following language-specific SDKs:
Apache Beam Pipeline Runners
The Beam Pipeline Runners translate the data processing pipeline you define with your Beam program into the API compatible with the distributed processing back-end of your choice. When you run your Beam program, you’ll need to specify the appropriate runner for the back-end where you want to execute your pipeline.
Beam currently supports Runners that work with the following distributed processing back-ends:
|Google Cloud Dataflow||In Development|
|Apache Flink||In Development|
|Apache Spark||In Development|
Note: You can always execute your pipeline locally for testing and debugging purposes.
Getting Started with Apache Beam
Interested in working with Apache Beam? Great! Here’s how to get started:
- If you are interested in using Beam for your data processing tasks, start with the Beam Programming Guide and Beam Examples.
- If you’re interested in creating a Beam Pipeline Runner for your distributed processing back-end, start with the Beam Runner Developer’s Guide.
- If you’re interested in contributing to the Beam SDKs, start with the Contribution Guide.
Apache Incubation Disclaimer
Apache Beam is an effort undergoing incubation at The Apache Software Foundation (ASF) sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
Apache Beam (incubating) is available under Apache License, version 2.0.