Apache Beam Go SDK 快速入门
此快速入门展示了如何使用 Apache Beam Go SDK 运行使用 示例管道,并使用 Direct Runner。Direct Runner 在你的机器上本地执行管道。
如果你有兴趣为 Apache Beam Go 代码库贡献代码,请查看 贡献指南。
本页内容
设置你的开发环境
确保你已准备好 Go 开发环境。如果没有,请按照 下载和安装 页面中的说明进行操作。
克隆 GitHub 仓库
克隆或下载 apache/beam-starter-go GitHub 仓库,并进入 beam-starter-go
目录。
运行快速入门
运行以下命令
输出类似于以下内容
这些行可能以不同的顺序出现。
探索代码
此快速入门的主要代码文件是 main.go (GitHub)。代码执行以下步骤
- 创建 Beam 管道。
- 创建初始
PCollection
。 - 应用转换。
- 使用 Direct Runner 运行管道。
创建管道
在创建管道之前,请调用 Init
函数
beam.Init()
然后创建管道
pipeline, scope := beam.NewPipelineWithRoot()
NewPipelineWithRoot
函数返回一个新的 Pipeline
对象,以及管道的根作用域。作用域 是复合转换的层次结构分组。
创建初始 PCollection
PCollection
抽象表示一个潜在的分布式、多元素数据集。Beam 管道需要一个数据源来填充初始 PCollection
。源可以是有界的(已知、固定大小)或无界的(大小无限制)。
此示例使用 Create
函数从字符串的内存中数组创建 PCollection
。生成的 PCollection
包含字符串“hello”、“world!”和用户提供的输入字符串。
elements := beam.Create(scope, "hello", "world!", input_text)
将转换应用于 PCollection
转换可以更改、过滤、分组、分析或以其他方式处理 PCollection
中的元素。
此示例添加了 ParDo 转换,将输入字符串转换为标题大小写
elements = beam.ParDo(scope, strings.Title, elements)
ParDo
函数获取父作用域、将应用于数据的转换函数以及输入 PCollection。它返回输出 PCollection。
前面的示例使用内置的 strings.Title
函数进行转换。你也可以向 ParDo 提供一个应用程序定义的函数。例如
func logAndEmit(ctx context.Context, element string, emit func(string)) {
beamLog.Infoln(ctx, element)
emit(element)
}
此函数记录输入元素并返回相同元素,未经修改。为此函数创建 ParDo,如下所示
beam.ParDo(scope, logAndEmit, elements)
在运行时,ParDo 将对输入集合中的每个元素调用 logAndEmit
函数。
运行管道
前面部分显示的代码定义了一个管道,但尚未处理任何数据。要处理数据,请运行管道
beamx.Run(ctx, pipeline)
Beam 运行器 在特定平台上运行 Beam 管道。此示例使用 Direct Runner,如果未指定运行器,则为默认运行器。Direct Runner 在你的机器上本地运行管道。它用于测试和开发,而不是为效率优化。有关更多信息,请参阅 使用 Direct Runner。
对于生产工作负载,你通常使用分布式运行器,该运行器在 Apache Flink、Apache Spark 或 Google Cloud Dataflow 等大数据处理系统上运行管道。这些系统支持大规模并行处理。
下一步
- 详细了解 Beam SDK for Go,并查看 Go SDK API 参考。
- 通过我们的 学习资源 自行学习。
- 深入了解我们最喜欢的 视频和播客。
- 加入 Beam users@ 邮件列表。
如果你遇到任何问题,请随时 联系我们!
最后更新于 2024/10/31
你找到你想要的所有内容了吗?
所有内容是否有用且清晰?有什么你想更改的吗?请告诉我们!