Apache Beam

repository·master·Indexed 11 days ago

https://github.com/apache/beam

A unified model for defining batch and streaming data-parallel processing pipelines. It provides SDKs for Java, Python, and Go, and supports execution on distributed backends including Apache Flink, Spark, and Google Cloud Dataflow.

Tokens
565.8K
Snippets
1.5K
Records
2.5K
Agent score
93%

What's inside Apache Beam

  1. Overview of the Twister2 Runner

    master

    The Twister2 Runner executes Apache Beam pipelines on a Twister2 cluster. It is designed for large-scale batch jobs that require high performance, particularly in High-Performance Computing (HPC) environments.

    Key features include:

    • Batch pipeline support.
    • Support for proprietary interconnects like Infiniband.
    • Distributed massively parallel processing using Bulk Synchronous Parallel (BSP) style execution.
    • Native support for Beam side-inputs.

    Warning: The Twister2 runner is deprecated and support is planned to be removed in Beam 3.0.

  2. Overview of Apache Beam I/O Connectors

    master

    Apache Beam I/O connectors are specialized transforms used to read from and write to external data storage systems. They allow Beam pipelines to interact with popular data storage types in a unified and distributed manner, leveraging native optimized connectivity.

    Connectors are categorized by how they are accessed:

    • Standard Connectors: Native to the SDK being used.
    • X-language Connectors: Available via the Apache Beam multi-language pipelines framework (allowing an SDK to use connectors written in a different language).
    • Managed API Connectors: Accessible through simplified Managed I/O APIs.
  3. What is Apache Beam?

    master

    Apache Beam is an open-source, unified model for defining both batch and streaming data-parallel processing pipelines. It allows you to write a single program that can process finite datasets (batch) or infinite datasets (streaming) using the same classes and transforms.

    Once a pipeline is defined using a Beam SDK, it is executed by a Runner on a distributed processing back-end (such as Apache Flink, Apache Spark, or Google Cloud Dataflow). Beam is ideal for embarrassingly parallel tasks, ETL (Extract, Transform, and Load) processes, and data integration.

  4. Overview of Apache Beam Completion Plugin

    master

    The Apache Beam Completion Plugin is an IntelliJ IDEA plugin designed to provide Java SDK Beam Transform completions. It assists developers by improving code intelligence specifically for Beam transforms within the IntelliJ IDE.

    Note: This project is part of the Google Summer of Code program and is not officially supported by Apache Beam.

  5. Overview of built-in I/O connectors

    master

    Apache Beam provides a variety of built-in I/O connectors to read from (Sources) and write to (Sinks) different data formats and storage systems. These connectors support multiple SDKs including Java, Python, Go, and TypeScript, and can operate in both Batch and Streaming modes.

    Key connector categories include:

    • File-based: FileIO, TextIO, AvroIO, ParquetIO, XmlIO, TFRecordIO, ThriftIO.
    • Cloud Storage: GcsFileSystem (Google Cloud Storage), S3FileSystem (Amazon S3), HadoopFileSystem (HDFS).
    • Messaging/Streaming: KafkaIO, KinesisIO, AmqpIO.
    • Specialized: TikaIO (for content extraction), In-memory (for Go SDK).
  6. Overview of Euphoria Java 8 DSL

    master

    Euphoria is a high-level Java 8 DSL (Domain Specific Language) designed for the Beam Java SDK. It provides an abstraction layer for Beam transformations to make pipelines easier to read and write. Euphoria is designed to be used alongside existing Beam pipelines, as they are convertible back and forth.

    Note: The integration of the Euphoria API into the main Beam project is currently in progress (tracked via BEAM-3900).

  7. Overview of Apache Beam

    master
    Apache Beam is a unified model for defining both batch and streaming data-parallel processing pipelines. It separates the pipeline definition from the execution environment, allowing developers to write code once using a language-specific SDK and run it on various distributed processing backends (Runners).
  8. Overview of the Hazelcast Jet Runner

    master

    The Hazelcast Jet Runner allows you to execute Apache Beam pipelines using Hazelcast Jet. It is designed for large-scale continuous jobs, supporting both batch (bounded) and streaming (unbounded) datasets with high throughput, low latency, and natural back-pressure.

    Note: The Jet Runner is currently in an EXPERIMENTAL state. It does not currently support Jet's full fault tolerance (if a job fails, it must be restarted) and may not match the raw performance of a native Jet job because Beam pipeline optimization is not yet fully implemented.

  9. Overview of the Apache Beam Go SDK

    master
    The Go SDK is a fully released SDK (as of v2.33.0) built entirely on the Beam Portability Framework. This architecture allows Go pipelines to execute on portable runners, including Apache Flink, Apache Spark, and Google Cloud Dataflow. It is designed to support both bounded and unbounded (streaming) data processing.
  10. Case Study: LinkedIn's use of Apache Beam for large-scale stream processing

    master

    LinkedIn uses Apache Beam as the backbone of its streaming infrastructure to process over 4 trillion events daily across 3,000+ pipelines. By adopting the Beam programming model, LinkedIn achieved:

    • Unified Processing: Converged batch and stream processing, replacing a complex Lambda architecture (which previously required maintaining separate codebases for Apache Samza and Apache Spark) with a single unified API.
    • Cost Optimization: Achieved up to 2x cost optimization depending on the use case.
    • Multi-language Support: Enabled teams to build pipelines using different SDKs (Java and Python), which was critical for emerging machine learning use cases.
    • Operational Efficiency: Reduced time-to-production for new pipelines from months to days and accelerated the labeling of abuse from days to minutes.
    • Scalability: Enabled processing time-series events at over 3 million queries per second.