Apache Beam Java SDK 快速入门
此快速入门向您展示如何运行使用 Apache Beam Java SDK 编写的 示例管道,使用 Direct Runner。Direct Runner 在您的机器上本地执行管道。
如果您有兴趣为 Apache Beam Java 代码库做出贡献,请查看 贡献指南。
在本页
设置开发环境
使用 sdkman
安装 Java 开发工具包 (JDK)。
您可以使用 Gradle 或 Apache Maven 来运行此快速入门。
克隆 GitHub 存储库
克隆或下载 apache/beam-starter-java GitHub 存储库,并进入 beam-starter-java
目录。
运行快速入门
Gradle:要使用 Gradle 运行快速入门,请运行以下命令
Maven:要使用 Maven 运行快速入门,请运行以下命令
输出类似于以下内容
这些行可能会以不同的顺序出现。
探索代码
此快速入门的主要代码文件是 App.java (GitHub)。代码执行以下步骤
- 创建一个 Beam 管道。
- 创建一个初始
PCollection
。 - 将转换应用于
PCollection
。 - 运行管道,使用 Direct Runner。
创建管道
代码首先创建一个 Pipeline
对象。Pipeline
对象构建要执行的转换图。
var options = PipelineOptionsFactory.fromArgs(args).withValidation().as(Options.class);
var pipeline = Pipeline.create(options);
PipelineOptions
对象允许您为管道设置各种选项。本示例中显示的 fromArgs
方法解析命令行参数,这使您能够通过命令行设置管道选项。
创建初始 PCollection
PCollection
抽象表示一个可能分布式的、多元素数据集。Beam 管道需要一个数据源来填充初始 PCollection
。数据源可以是有界的(具有已知的固定大小)或无界的(具有无限大小)。
本示例使用 Create.of
方法从字符串的内存中数组创建一个 PCollection
。生成的 PCollection
包含字符串“Hello”、“World!”以及用户提供的输入字符串。
return pipeline
.apply("Create elements", Create.of(Arrays.asList("Hello", "World!", inputText)))
将转换应用于 PCollection
转换可以更改、过滤、分组、分析或以其他方式处理 PCollection
中的元素。本示例使用 MapElements
转换,它将集合的元素映射到一个新集合
.apply("Print elements",
MapElements.into(TypeDescriptors.strings()).via(x -> {
System.out.println(x);
return x;
}));
其中
into
指定输出集合中元素的数据类型。via
定义一个映射函数,该函数在输入集合的每个元素上调用以创建输出集合。
在本示例中,映射函数是一个 lambda 表达式,它只返回原始值。它还将值打印到 System.out
作为副作用。
运行管道
前面几节中显示的代码定义了一个管道,但尚未处理任何数据。要处理数据,请运行管道
pipeline.run().waitUntilFinish();
Beam 运行器 在特定平台上运行 Beam 管道。本示例使用 Direct Runner,它是在您没有指定运行器的情况下默认运行器。Direct Runner 在您的机器上本地运行管道。它旨在用于测试和开发,而不是针对效率进行优化。有关更多信息,请参阅 使用 Direct Runner。
对于生产工作负载,您通常使用分布式运行器,它在 Apache Flink、Apache Spark 或 Google Cloud Dataflow 等大数据处理系统上运行管道。这些系统支持大规模并行处理。
后续步骤
- 了解有关 Beam Java SDK 的更多信息,并浏览 Java SDK API 参考。
- 通过我们的 学习资源 进行自定进度的学习。
- 深入了解我们最喜欢的 视频和播客。
- 加入 Beam users@ 邮件列表。
如果您遇到任何问题,请随时 联系我们!
最后更新于 2024/10/31
您找到了您要找的所有内容吗?
所有内容是否都有用且清晰?您想更改任何内容吗?请告诉我们!