Apache Beam Typescript SDK

Apache Beam 的 Typescript SDK 提供了一个简单而强大的 API,用于构建批处理和流式数据处理管道。

使用 Typescript SDK 入门

使用 Beam Typescript SDK 快速入门 开始使用,设置您的开发环境,获取 Beam SDK for Typescript 以及运行示例管道。然后,阅读 Beam 编程指南,了解适用于 Beam 中所有 SDK 的基本概念。

概述

我们通常尝试以 TypeScript 惯用的方式应用 Beam API 中的概念。此外,我们还从传统的 SDK 中做出了一些显著的改变。

可以在 wordcount.ts 中找到示例管道,并在 beam 编程指南 中找到更多文档。

管道 I/O

请参见 Beam 提供的 I/O 转换 页面,了解当前可用的 I/O 转换列表。

支持的功能

Typescript SDK 仍在开发中,但已经支持 Beam 模型目前支持的许多功能,但并非全部功能,包括批处理和流式处理。它还对 跨语言转换 提供广泛的支持,可以利用这些转换来使用 Typescript 管道的更高级功能。

序列化

由于 Beam 设计为在分布式环境中运行,因此所有函数和数据都需要可序列化。

默认情况下,数据使用 BSON 编码进行序列化,但这可以通过将 withRowCoderwithCoderInternal 转换应用于 PCollection 来进行自定义。

在转换中使用的函数(例如 map),包括闭包及其捕获的数据,通过 ts-serialize-closures 进行序列化。虽然这在大多数情况下都能很好地处理,但它仍然有一些限制,它仍然可以捕获,并且在对引用对象的传递闭包进行遍历时,它可能会捕获那些更适合导入而不是序列化的对象。为了避免这些限制,可以显式地使用 requireForSerialization 函数注册引用,如下所示。

// in module my_package/module_to_be_required
import { requireForSerialization } from "apache-beam/serialization";

// define or import various objects_to_register here

requireForSerialization(
    "my_package/module_to_be_required", { objects_to_register });

入门项目有一个这样的 示例