Apache Beam Typescript SDK 快速入门

本快速入门将向您展示如何使用 Apache Beam Typescript SDK,并使用 Direct Runner 运行 示例管道

如果您有兴趣为 Apache Beam Typescript 代码库做出贡献,请参阅 贡献指南

在本页

设置你的开发环境

确保您已安装 Node.js 开发环境。如果您没有,您可以从 下载页面 下载并安装它。

由于它广泛使用跨语言转换,因此建议系统上也安装 Python 3 和 Java。

克隆 GitHub 仓库

克隆或下载 apache/beam-starter-typescript GitHub 仓库,然后进入 beam-starter-typescript 目录。

git clone https://github.com/apache/beam-starter-typescript.git
cd beam-starter-typescript

安装项目依赖项

运行以下命令以安装项目的依赖项。

npm install

编译管道

然后使用以下命令构建管道

npm run build

运行快速入门

运行以下命令

node dist/src/main.js --input_text="Greetings"

输出类似于以下内容

Hello
World!
Greetings

这些行可能以不同的顺序出现。

探索代码

此快速入门的主要代码文件是 app.ts (GitHub)。代码执行以下步骤

  1. 定义一个 Beam 管道,它。
  1. 使用 Direct Runner 运行管道。

创建管道

Pipeline 只是一个可调用对象,它接受单个 root 对象。Pipeline 函数构建要执行的转换图。

创建初始 PCollection

PCollection 抽象表示一个可能分布式、多元素的数据集。Beam 管道需要一个数据源来填充初始 PCollection。源可以是有界的(具有已知的固定大小)或无界的(具有无限大小)。

此示例使用 Create 方法从字符串的内存数组中创建 PCollection。生成的 PCollection 包含字符串“Hello”、“World!”以及用户提供的输入字符串。

root.apply(beam.create(["Hello", "World!", input_text]))

将转换应用于 PCollection

转换可以更改、过滤、分组、分析或以其他方式处理 PCollection 中的元素。此示例使用 Map 转换,它将集合的元素映射到新的集合

.map(printAndReturn);

为了方便起见,PColletion 有一个 map 方法,但更一般地,转换是使用 .apply(someTransform()) 应用的。

运行管道

要运行管道,需要创建一个运行器(可能带有一些选项)

createRunner(options)

然后在上面创建的管道可调用对象上调用它的 run 方法。

.run(createPipeline(...));

Beam 运行器 在特定平台上运行 Beam 管道。如果您没有指定运行器,Direct Runner 是默认运行器。Direct Runner 在您的机器上本地运行管道。它旨在用于测试和开发,而不是针对效率进行优化。有关更多信息,请参阅 使用 Direct Runner

对于生产工作负载,您通常使用分布式运行器,它在大型数据处理系统(如 Apache Flink、Apache Spark 或 Google Cloud Dataflow)上运行管道。这些系统支持大规模并行处理。不同的运行器可以通过选项中的运行器属性请求,例如 createRunner({runner: "dataflow"})createRunner({runner: "flink"})。在此示例中,此值可以通过命令行作为 --runner=... 传递,例如,要在 Dataflow 上运行,您需要编写

node dist/src/main.js \
    --runner=dataflow \
    --project=${PROJECT_ID} \
    --tempLocation=gs://${GCS_BUCKET}/wordcount-js/temp --region=${REGION}

下一步

如果您遇到任何问题,请随时 联系我们