Apache Beam TypeScript SDK 快速入門

本快速入門將示範如何使用 Direct Runner 執行使用 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 方法,執行以上建立的管線 callable 物件。

.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}

後續步驟

如果您遇到任何問題,請隨時聯繫我們