Giter Club home page Giter Club logo

beam-101's Introduction

Beam introduce

Apache Beam是一个用于大数据处理的开源分布式计算框架。它提供了一种统一的编程模型,可以用于在不同的分布式处理引擎上编写批处理和流处理任务。

Apache Beam的设计目标是提供一种通用的编程模型,使得能够以一种统一的方式编写并行数据处理任务,而无需关心底层的执行引擎。它允许在不同的执行引擎上运行相同的代码,执行引擎包括Apache Flink、Apache Spark、Google Cloud Dataflow等。

使用Apache Beam,可以编写数据处理管道ETL(从各种数据源读取数据,对数据进行转换和处理,然后将结果写回到不同的数据存储中)。 它支持批处理和流处理模式,可以处理无界数据流,并支持事件时间和处理时间的窗口操作。

Apache Beam的编程模型基于一组核心概念,包括PCollection(数据集合)、PTransform(数据转换操作)和Pipeline(数据处理管道)。提供各种内置的转换操作,如映射、过滤、聚合和连接,也可以自定义自己的转换操作。

术语列表

  • Pipeline - 管道是用户构建的转换图,定义所需的数据处理操作。
  • PCollection - PCollection 是一个数据集或数据流。 管道处理的数据是 PCollection 的一部分。
  • PTransform - PTransform(或转换)表示管道中的数据处理操作或步骤。 变换应用于零个或多个 PCollection 对象,并生成零个或多个 PCollection 对象。
  • Aggregation聚合 - 聚合是根据多个(1 个或多个)输入元素计算值。
  • User-define function(UDF)用户定义函数 (UDF) - 某些 Beam 操作允许您运行用户定义代码作为配置转换的一种方式。
  • Schema - [[Beam Schema]] 是 PCollection 的独立于语言的类型定义。 PCollection 的架构将该 PCollection 的元素定义为命名字段的有序列表。
  • SDK - 特定于语言的库,可让管道作者构建转换、构造管道并将其提交给运行器。
  • Runner - Runner 使用您选择的数据处理引擎的功能运行 Beam 管道。
  • Window - PCollection 可以根据各个元素的时间戳细分为窗口。 Windows 通过将集合划分为有限集合的窗口,可以对随时间增长的集合进行分组操作。
  • Watermark - Watermark是对某个窗口中的所有数据预计何时到达的猜测。 这是必需的,因为并不总是保证数据按事件时间顺序到达管道,或者总是以可预测的时间间隔到达。
  • Trigger触发器 - 触发器确定何时聚合每个窗口的结果。
  • State and timer状态和计时器 - 每键状态和计时器回调是较低级别的原语,使您可以完全控制随着时间的推移而增长的聚合输入集合。
  • Splittable DoFn可拆分 DoFn - 可拆分 DoFn 允许您以非整体方式处理元素。 您可以检查元素的处理,并且运行程序可以分割剩余的工作以产生额外的并行性。

设计理念和核心概念

设计理念:

  • 统一编程模型:Apache Beam提供了一个统一的编程模型,使开发人员能够以一种通用的方式编写并行数据处理任务,而无需关心底层的执行引擎。这种统一模型使得可以在不同的执行引擎上运行相同的代码,实现跨平台的灵活性和可移植性。
  • 批处理和流处理一体化:Beam支持批处理和流处理模式,并提供一致的编程接口。这使得能够在同一套代码中处理批量数据和无界数据流,无需切换不同的处理框架。
  • 窗口和事件时间处理:Beam提供了窗口操作和事件时间处理的能力。窗口操作允许开发人员对数据进行分组和聚合,而事件时间处理使得数据处理可以基于事件发生的时间而不是数据到达的时间。
  • 可扩展性和高性能:Apache Beam旨在提供可扩展性和高性能的数据处理能力。它支持分布式并行计算,并能够利用底层执行引擎的优势和优化。

核心概念:

  • PCollection:PCollection是Beam中的核心抽象概念,代表数据集合。它可以是包含任意类型数据的有界或无界集合。开发人员可以对PCollection应用各种转换操作,如映射、过滤、聚合等。
  • PTransform:PTransform是数据转换操作的抽象表示。它接受一个或多个PCollection作为输入,并生成一个或多个新的PCollection作为输出。PTransform可以是内置的转换操作,也可以是开发人员自定义的转换操作。
  • Pipeline:Pipeline是数据处理管道的表示。它由一系列的PTransform组成,形成有向无环图(DAG)。Pipeline负责管理整个数据处理过程,包括转换操作的编译、优化和执行。
  • 运行器(Runners):运行器是将Beam管道转换为具体执行引擎上作业的组件。它负责将Pipeline转换为特定执行引擎的作业或任务,并管理其执行过程。Beam提供了多个运行器,如Flink、Spark、Google Cloud Dataflow等。
  • 窗口操作(Windowing):窗口操作允许将数据集合分组为有限的窗口,并对窗口内的数据进行聚合或处理。窗口操作可以基于事件时间、处理时间或其他自定义条件进行定义。
  • 触发器(Triggers):触发器定义了何时触发窗口操作的条件。它可以控制数据在窗口内的聚合时间和输出时间。

其他概念

Runner

Apache Beam支持多种执行引擎,包括以下几个主要的引擎:

  1. Apache Flink:Apache Flink是一个用于分布式流处理和批处理的开源计算引擎。Apache Beam提供了针对Flink的运行器,使您可以在Flink上执行Beam管道。
  2. Apache Spark:Apache Spark是一个快速通用的大数据处理引擎,支持批处理和流处理。Apache Beam提供了对Spark的运行器,允许您在Spark上执行Beam管道。
  3. Google Cloud Dataflow:Google Cloud Dataflow是Google提供的托管式流处理和批处理服务。Apache Beam最初是基于Google Cloud Dataflow开发的,并提供了对Dataflow的本地运行器和Google Cloud Dataflow服务的支持。 此外,Apache Beam还提供了一种直接在本地执行的 Direct Runner,用于开发和测试Beam管道而无需依赖具体的分布式执行引擎。这使得可以在本地环境中快速迭代和调试代码。

Bundle

在 Apache Beam 中,Bundle(数据块)是数据流管道中的一个概念,用于将数据分组成更小的批次进行处理。Bundle 通常用于在数据流管道中进行数据并行处理和优化。

Bundle 的大小是可配置的,它决定了在数据流管道中处理数据的粒度。 较大的 Bundle 可以提高数据处理的吞吐量,但也会增加处理延迟。较小的 Bundle 可以减少处理延迟,但也会增加处理开销。

在 Apache Beam 中,数据流管道通常被划分为多个 Bundle,并且每个 Bundle 中的数据可以在并行处理中独立地进行处理。这种并行处理可以提高数据处理的效率和吞吐量。

Bundle 的划分和处理是由 Beam 运行器负责管理的。运行器可以根据不同的策略和算法来决定如何划分数据并将其分配给不同的处理节点进行并行处理。每个 Bundle 的处理通常是独立的,因此运行器可以在不同的处理节点上同时处理多个 Bundle,从而实现并行处理。

需要注意的是,Bundle 的概念在不同的 Beam 运行器中可能有所不同,具体的实现和行为可能因运行器而异。因此,在使用 Apache Beam 时,需要根据具体的运行器文档和配置来了解和调整 Bundle 的设置。

Coder

[[Beam Coder]] 可以用于处理各种类型的数据,包括基本数据类型(如整数、字符串)、自定义对象、集合等。Beam 提供了一些内置的 Coder,例如 StringCoder、IntegerCoder、ListCoder 等,用于处理常见的数据类型。

Coder 的主要功能包括:

  1. 序列化(编码):Coder 将数据对象转换为字节流,以便在数据流管道中传输和存储。它将对象的字段和值编码为二进制格式,以便在不同的计算节点之间进行传递。
  2. 反序列化(解码):Coder 从字节流中还原数据对象。它将字节流解析为原始的数据类型和结构,以便在数据流管道中进行后续的处理和操作。
  3. 容错处理:Coder 可以处理数据的容错需求。它可以捕获和处理序列化和反序列化过程中的异常,以确保数据的正确传输和还原。
  4. 可扩展性:Beam 允许开发者自定义和扩展 Coder,以处理特定的数据类型和编码需求。通过实现自定义的 Coder,开发者可以定义如何序列化和反序列化特定类型的数据。

使用正确的 Coder 可以确保数据在 Apache Beam 的数据流管道中正确地进行序列化和反序列化,以便在不同的计算节点之间进行传递和处理。Beam 提供了一组内置的 Coder,同时也支持自定义 Coder,以满足不同类型和需求的数据处理场景。

Schema

在 Apache Beam 中,Schema(模式)是用于描述和定义数据的结构和类型的概念。它提供了一种统一的方式来表示和操作数据流中的记录,类似于数据库中的表结构或数据集的模式定义。

以下是一些关键的概念和特点与 Schema 相关:

  1. 数据结构定义:Schema 定义了数据流中记录的结构和字段。它描述了记录中的字段名称、类型、顺序以及可选的其他属性,如约束条件、默认值等。
  2. 类型系统:Schema 使用类型系统来定义字段的数据类型,例如整数、字符串、布尔值、日期等。这样可以确保数据的类型正确性和一致性。
  3. 兼容性检查:Schema 可以用于进行数据兼容性检查。在数据流中,当记录的 Schema 与预期的 Schema 不匹配时,可以进行兼容性检查来检测和处理潜在的数据不一致性问题。
  4. 数据转换和映射:通过使用 Schema,可以进行数据转换和映射操作。可以将数据从一种 Schema 转换为另一种 Schema,或者将数据的字段映射到不同的字段名称和类型。
  5. 数据验证:Schema 可以用于验证数据的有效性和完整性。它可以定义字段的约束条件和验证规则,如非空、唯一性、范围限制等。

使用 Schema 可以帮助开发者更好地理解和操作数据流中的记录。它提供了一种结构化的方式来描述数据的结构和类型,并支持数据转换、兼容性检查和数据验证等功能。通过使用 Schema,可以提高数据处理流水线的可维护性、可扩展性和数据质量。

Metric

在 Apache Beam 中,Metric(指标)是用于收集和跟踪数据处理流水线的性能和统计信息的概念。Metric 可以用于测量和记录数据处理操作的各种指标,例如数据量、处理时间、错误数量等。它们对于监控和调优数据处理流水线的执行非常有用。

以下是一些关键的概念和特点与 Metric 相关:

  1. 收集数据:Metric 用于收集数据处理流水线的性能和统计信息。它可以在数据处理操作(如 DoFn)的代码中定义和使用,以便在执行过程中收集相关指标数据。
  2. 统计信息:Metric 可以用于收集各种统计信息,例如计数、求和、平均值等。这些统计信息可以帮助开发者了解数据处理操作的行为和性能,并进行进一步的分析和优化。
  3. 多个级别:Metric 可以定义在不同的级别上,例如全局级别、作业级别、组级别或元素级别。这样可以跟踪和记录不同层次的指标数据,从整体到细节进行性能分析和监控。
  4. 可视化和报告:通过使用适当的工具和报告机制,Metric 可以将收集的指标数据可视化和报告。这样可以以图表、图形或其他形式展示数据处理流水线的性能和统计信息,帮助用户更好地理解和分析数据处理过程。

通过使用 Metric,开发者可以在 Apache Beam 的数据处理流水线中收集和监控关键的性能和统计信息。Metric 提供了一种简单而有效的方式来测量和记录数据处理操作的各种指标,以便进行性能分析、故障排查和优化。

Functions

DoFn

在 Apache Beam 中,DoFn 是一个核心概念,代表一个可重用的数据转换函数。DoFn 是一个抽象类,用于定义数据处理的逻辑。它是 Apache Beam 中的一个重要组件,用于在数据流管道中对数据进行转换和处理。

DoFn 类有三个主要的方法:

  1. processElement():这是最重要的方法,在其中定义了数据的处理逻辑。对于输入的每个元素,processElement() 方法会被调用一次,开发者可以在这个方法中对输入的元素进行转换、过滤、聚合等操作,并生成新的输出元素。
  2. startBundle():在处理数据之前,会在每个 bundle(数据块)的开始调用一次。可以在这个方法中进行一些初始化操作,例如建立数据库连接或加载模型。
  3. finishBundle():在处理数据完成后,会在每个 bundle 的结束调用一次。可以在这个方法中进行一些清理操作,例如关闭数据库连接或释放资源。

DoFn 的作用是允许开发者定义自定义的数据处理逻辑,并将其应用于数据流管道中的每个元素。 通过实现自定义的 DoFn 类,开发者可以在数据流管道中进行各种数据转换和操作,例如数据清洗、数据过滤、数据聚合等。 DoFn 提供了灵活性和可重用性,使得开发者可以根据自己的需求定义和组合不同的数据处理逻辑,以构建复杂的数据处理流水线。

值得注意的是,DoFn 是 Apache Beam 中的一个抽象概念,具体的实现可能会因为不同的Runner(例如 Apache Flink、Apache Spark 等)而有所不同。在具体的运行器中,DoFn 可能会有一些额外的特性和限制,需要根据具体的Runner文档来了解和使用。

ParDo

在 Apache Beam 中,ParDo 是一个核心的转换操作,用于将一个 DoFn 应用于数据流管道中的每个元素。ParDo 是 Parallel Do(并行执行)的缩写,它允许在数据流管道中并行地执行自定义的数据处理逻辑。

ParDo 操作的作用是将输入的数据集中的每个元素应用于指定的 DoFn,并生成相应的输出元素。每个输入元素都会独立地经过 DoFn 的处理逻辑,生成对应的输出元素。这使得 ParDo 操作可以在数据流管道中对数据进行转换、过滤、聚合等操作。

ParDo 操作有以下特点和作用:

  1. 并行处理:ParDo 操作可以在数据流管道中并行地处理输入元素,充分利用计算资源,提高数据处理的效率和吞吐量。
  2. 元素转换:通过定义自定义的 DoFn,可以在 ParDo 操作中对输入元素进行各种转换操作,例如数据清洗、格式转换、计算等。
  3. 元素过滤:在 DoFn 中可以根据特定的条件对输入元素进行过滤,只保留符合条件的元素作为输出。
  4. 元素聚合:通过 DoFn 中的状态变量,可以实现对输入元素的聚合操作,例如求和、计数等。
  5. 输出多个元素:DoFn 可以生成多个输出元素,从而实现数据的拆分和扩展。

ParDo 操作是 Apache Beam 中最常用和强大的操作之一,它提供了灵活的数据处理能力,使得开发者可以根据自己的需求定义和应用各种数据转换和操作。通过结合 ParDo 和其他转换操作,可以构建复杂的数据处理流水线,实现灵活、高效的数据处理和分析。

在 Apache Beam 中,Coder 是用于序列化和反序列化数据的对象。它定义了如何将数据转换为字节流(编码)以及如何从字节流中还原数据(解码)。Coder 是用于在数据流管道中在不同的计算节点之间传递数据的关键组件。

PipelineOption

在 Apache Beam 中,PipelineOptions(管道选项)是用于配置和自定义数据处理流水线的参数和选项的对象。它允许开发者在运行数据处理流水线时指定一些运行时参数,以满足特定的需求和场景。

以下是一些关键的概念和特点与 PipelineOptions 相关:

  1. 配置参数:PipelineOptions 允许开发者配置各种参数,如输入输出路径、并行度、超时时间、数据格式等。这些参数可以通过命令行参数、配置文件或编程方式进行设置。

  2. 可扩展性:PipelineOptions 是可扩展的,可以根据不同的需求定义和添加自定义选项。开发者可以根据自己的特定需求添加额外的选项,并在流水线的执行中使用这些选项。

  3. 运行时参数:PipelineOptions 中的选项在数据处理流水线的运行时起作用。它们可以影响流水线的行为和执行方式,例如设置并行度、优化策略、资源配置等。

  4. 环境配置:PipelineOptions 可以用于配置特定的执行环境。例如,可以设置在本地运行还是在分布式集群上运行,选择不同的运行器(Runner)以及与运行器相关的参数。

  5. 可组合性:PipelineOptions 可以与其他 Apache Beam 的组件和功能一起使用,如数据源、数据转换、窗口操作等。它们提供了一种统一的方式来配置和管理整个数据处理流水线。

通过使用 PipelineOptions,开发者可以定制化和优化数据处理流水线的行为和执行方式。它提供了一种灵活的机制来配置和管理流水线的参数和选项,以满足不同的需求和场景。

PCollection

PCollection(Parallel Collection)是 Apache Beam 中表示数据集合的抽象概念,它代表了数据流管道中的一个数据集。PCollection 是数据流管道中数据的主要输入和输出。

PCollection 可以包含任意类型的数据元素,例如整数、字符串、自定义对象等。它是一个分布式的、可并行处理的数据集合,可以在数据流管道中进行各种转换和操作。

以下是一些关键的概念和特点与 PCollection 相关:

  1. 分布式数据集合:PCollection 是一个分布式的数据集合,它可以跨多个计算节点进行并行处理。Apache Beam 运行器可以根据具体的运行环境和资源配置,将 PCollection 分割成多个数据块(Bundle),并将这些数据块分配给不同的处理节点并行处理。

  2. 数据的不可变性:PCollection 中的数据是不可变的,即一旦创建就不能修改。这种不可变性使得数据流管道中的操作具有幂等性,可以安全地进行并行处理,而无需考虑数据的状态变化。

  3. 输入和输出:PCollection 可以作为转换操作的输入和输出。一个转换操作可以接受一个或多个输入的 PCollection,并生成一个或多个输出的 PCollection。这种输入和输出的方式使得数据流管道中的数据处理操作可以进行组合、链接和重用。

  4. 惰性计算:PCollection 的计算是惰性的,即在定义数据流管道时并不会立即触发计算。只有在运行 Pipeline 时,Apache Beam 才会根据需要触发 PCollection 的计算和转换操作。

  5. 数据窗口(Windowing):PCollection 可以与窗口(Window)结合使用,实现基于时间或其他标准的数据窗口划分。窗口可以将数据集合划分为有限的、离散的数据块,以便进行有限范围内的数据处理操作。

通过使用 PCollection,开发者可以在 Apache Beam 中对数据进行抽象和处理,实现各种转换、过滤、聚合等操作。PCollection 提供了一种统一的数据处理接口,使得开发者可以以高层次、声明性的方式来构建数据处理流水线,提高代码的可读性和可维护性。

PTransform

PTransform(Pipeline Transform)是 Apache Beam 中表示数据处理操作的概念和抽象,它用于对输入的 PCollection 进行转换和操作,生成输出的 PCollection。PTransform 是一种可组合和可重用的数据处理模块,可以在数据流管道中构建复杂的数据处理流水线。

PTransform 可以被视为一个数据处理函数,它接受一个或多个输入的 PCollection,并生成一个或多个输出的 PCollection。PTransform 可以是已经定义好的 Beam 提供的转换操作,也可以是自定义的用户定义的转换操作。

以下是一些关键的概念和特点与 PTransform 相关:

  1. 输入和输出:PTransform 接受一个或多个输入的 PCollection,并生成一个或多个输出的 PCollection。输入和输出的 PCollection 可以是不同类型的数据集,例如整数、字符串、自定义对象等。

  2. 组合和嵌套:PTransform 可以通过组合和嵌套的方式构建复杂的数据处理流水线。多个 PTransform 可以连接在一起,形成一个更大的 PTransform,从而实现多个数据处理操作的组合和链式调用。

  3. 可重用性:PTransform 是可重用的数据处理模块,可以在不同的数据流管道中多次使用。通过定义和封装常见的数据处理逻辑为 PTransform,可以提高代码的可读性和可维护性,并促进代码的复用。

  4. 并行处理:PTransform 可以在数据流管道中并行地处理输入数据集的元素。Apache Beam 运行器可以根据具体的运行环境和资源配置,将输入的 PCollection 划分为多个 Bundle,并将每个 Bundle 分配给不同的处理节点进行并行处理。

  5. 自定义 PTransform:除了使用 Beam 提供的现有 PTransform,开发者还可以通过继承或组合已有的 PTransform,定义自己的自定义 PTransform,以满足特定的数据处理需求。

通过使用 PTransform,开发者可以以一种高层次、模块化的方式来构建数据处理流水线,将复杂的数据处理逻辑分解为更小、更可管理的组件。这种抽象和组合的方式使得数据处理流水线的构建和维护更加灵活、高效,并提供了一致的编程模型,适用于不同的数据处理场景和需求。

Pipeline

Pipeline 是 Apache Beam 中表示数据处理流水线的概念和抽象,它定义了数据处理的整体流程和顺序。Pipeline 是组织和执行数据处理操作的框架,用于构建、运行和管理数据流管道。

以下是一些关键的概念和特点与 Pipeline 相关:

  1. 数据处理流程:Pipeline 定义了数据处理流水线的整体流程和顺序。它由一系列的数据处理操作(PTransform)组成,用于对输入的数据集合(PCollection)进行转换和操作,最终生成输出的数据集合(PCollection)。

  2. 可组合和可重用:Pipeline 提供了一种可组合和可重用的方式来构建数据处理流水线。多个数据处理操作(PTransform)可以连接在一起,形成一个更大的数据处理操作,从而实现多个数据处理步骤的组合和链式调用。这种可组合性和可重用性使得数据处理流水线的构建和维护更加灵活、高效。

  3. 数据流和惰性计算:Pipeline 以数据流的形式处理输入数据集合。在定义 Pipeline 时,并不会立即触发计算,而是采用惰性计算的方式。只有在运行 Pipeline 时,Apache Beam 才会根据需要触发数据集合的计算和转换操作。

  4. 跨多个计算节点:Pipeline 可以在分布式计算环境中执行,跨多个计算节点进行并行处理。Apache Beam 运行器可以根据具体的运行环境和资源配置,将数据集合分割成多个数据块(Bundle),并将这些数据块分配给不同的处理节点并行处理。

  5. 运行和管理:Pipeline 提供了运行和管理数据处理流水线的功能。通过运行 Pipeline,用户可以触发数据处理流水线的执行,并监控和管理执行过程中的状态和进度。

通过使用 Pipeline,开发者可以以一种结构化和可组合的方式来构建数据处理流水线,实现灵活、可扩展的数据处理和分析。Pipeline 提供了一致的编程模型,使得开发者可以以高层次的抽象来描述数据处理逻辑,提高代码的可读性和可维护性。同时,Pipeline 还提供了丰富的工具和功能,用于监控、管理和调优数据处理流水线的执行。

Cross-Language 和 Expansion-Service

在 Apache Beam 中,有两个重要的概念:跨语言转换(Cross-Language Transform)和扩展服务(Expansion Service)。它们都是为了支持在不同编程语言之间共享和复用数据处理逻辑。

  1. 跨语言转换(Cross-Language Transform): 跨语言转换是指在 Apache Beam 中,可以使用一种编程语言编写的数据处理逻辑(称为原生转换)在其他编程语言中进行复用和执行。它允许开发人员在不同的语言(如 Java、Python、Go 等)之间共享数据处理逻辑,而无需重新实现相同的功能。

    跨语言转换的关键是将原生转换编译为一种中间表示(如 Apache Beam 的定义的通用数据流图),然后在其他语言中解析和执行这个中间表示。这样,开发人员可以使用自己熟悉的编程语言编写转换逻辑,并在其他语言中进行复用。

  2. 扩展服务(Expansion Service): 扩展服务是 Apache Beam 中用于支持跨语言转换的运行时组件。它提供了一种机制,使得在不同语言中编写的数据处理逻辑能够相互通信和交换信息。

    扩展服务充当中间层,负责接收来自不同语言的请求,并将其转发给相应的扩展(Expansion)。扩展是一种特殊的组件,负责将中间表示的转换逻辑解析为具体的代码,并在相应的语言中执行。

当你在一个编程语言中编写了一个原生的转换(例如 Java),但希望在另一个编程语言(例如 Python)中使用相同的转换逻辑时,Expansion Service 就发挥了作用。它将接收到的跨语言转换请求解析为中间表示,然后将其转发给相应的扩展进行处理。

当跨语言转换在 Beam Pipeline 中被调用时,它会生成一个跨语言转换请求,然后通过扩展服务将请求发送给扩展进行处理。扩展服务负责管理和调度扩展的生命周期,并确保跨语言转换能够在不同语言中正确执行。

通过跨语言转换和扩展服务,Apache Beam 提供了一种灵活而强大的方式,使得开发人员可以在不同编程语言之间共享和复用数据处理逻辑,从而更好地适应不同团队成员的技术栈和编程偏好。

Reasons to use Beam with Flink

将 Beam 与 Flink 结合使用的原因

Why would you want to use Beam with Flink instead of directly using Flink? Ultimately, Beam and Flink complement each other and provide additional value to the user. The main reasons for using Beam with Flink are the following:
为什么要将 Beam 与 Flink 结合使用而不是直接使用 Flink?最终,Beam 和 Flink 相辅相成,为用户提供额外的价值。将 Beam 与 Flink 结合使用的主要原因如下:

  • Beam provides a unified API for both batch and streaming scenarios.
    Beam 为批处理和流处理场景提供了统一的 API。
  • Beam comes with native support for different programming languages, like Python or Go with all their libraries like Numpy, Pandas, Tensorflow, or TFX.
    Beam 原生支持不同的编程语言,例如 Python 或 Go 及其所有库,例如 Numpy、Pandas、Tensorflow 或 TFX。
  • You get the power of Apache Flink like its exactly-once semantics, strong memory management and robustness.
    您将获得 Apache Flink 的强大功能,例如它的一次性语义、强大的内存管理和稳健性。
  • Beam programs run on your existing Flink infrastructure or infrastructure for other supported Runners, like Spark or Google Cloud Dataflow.
    Beam 程序在您现有的 Flink 基础设施或其他受支持的 Runner 的基础设施上运行,例如 Spark 或 Google Cloud Dataflow。
  • You get additional features like side inputs and cross-language pipelines that are not supported natively in Flink but only supported when using Beam with Flink.
    您可以获得额外的功能,例如侧输入和跨语言管道,这些功能在 Flink 中本机不支持,但仅在将 Beam 与 Flink 结合使用时才支持。

一个最简单的读取加写入Clickhouse的例子-> [[Beam Example]]-任意IO + Json转换 + 写入Clickhouse

beam-101's People

Contributors

leo9827 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.