Apache Beam TypeScript SDK

Apache Beam 用の Typescript SDK は、バッチおよびストリーミングデータ処理パイプラインを構築するためのシンプルで強力な API を提供します。

TypeScript SDK を使い始める

開発環境を設定し、Beam SDK for Typescript を入手し、パイプラインの例を実行するには、Beam Typescript SDK クイックスタートを参照してください。次に、Beam のすべての SDK に適用される基本的な概念を学ぶには、Beam プログラミングガイドをお読みください。

概要

一般的に、Beam API の概念を TypeScript の慣用的な方法で適用しようとしています。さらに、従来の SDK とはいくつかの注目すべき点が異なります。

パイプラインの例は wordcount.ts にあり、詳細なドキュメントはbeam プログラミングガイドにあります。

パイプライン I/O

現在利用可能な I/O 変換の一覧については、Beam 提供の I/O 変換のページを参照してください。

サポートされている機能

TypeScript SDK はまだ開発中ですが、バッチとストリーミングの両方で、現在 Beam モデルでサポートされている機能の多く(すべてではありません)をすでにサポートしています。また、TypeScript パイプラインからより高度な機能を利用するために活用できるクロス言語変換も幅広くサポートしています。

シリアライズ

Beam は分散環境で実行するように設計されているため、すべての関数とデータはシリアライズ可能である必要があります。

デフォルトでは、データは BSON エンコーディングを使用してシリアライズされますが、これは PCollection に withRowCoder または withCoderInternal 変換を適用することでカスタマイズできます。

クロージャーとそのキャプチャされたデータを含む、変換(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 });

スタータープロジェクトにはそのようながあります。