Apache Beam 術語表

聚合

一種轉換模式,用於從多個輸入元素計算值。聚合類似於 MapReduce 模型中的 reduce 運算。聚合轉換包括 Combine(將使用者定義函式套用於聚合中的所有元素)、Count(計算聚合中所有元素的計數)、Max(計算聚合中的最大元素)和 Sum(計算聚合中所有元素的總和)。

如需內建聚合轉換的清單,請參閱

若要瞭解更多資訊,請參閱

套用

一種在輸入 PCollection(或一組 PCollection)上叫用轉換以產生一個或多個輸出 PCollection 的方法。apply 方法附加至 PCollection(或值)。叫用多個 Beam 轉換類似於方法鏈,但有一個不同之處:您將轉換套用至輸入 PCollection,將轉換本身作為引數傳遞,而運算會傳回輸出 PCollection。由於 Beam 的延遲執行模型,套用轉換不會立即執行該轉換。

若要瞭解更多資訊,請參閱

批次處理

一種資料處理範例,用於處理有限或有界的資料集。有界的 PCollection 代表已知且固定大小的資料集。從批次資料來源(例如檔案或資料庫)讀取會建立有界的 PCollection。批次處理作業最終會結束,這與串流作業相反,串流作業會執行到取消為止。

若要瞭解更多資訊,請參閱

有界資料

已知且固定大小的資料集(或者,不會隨著時間成長的資料集)。PCollection 可以是有界的或無界的,具體取決於它所代表的資料來源。從批次資料來源(例如檔案或資料庫)讀取會建立有界的 PCollection。Beam 也支援從無界來源讀取有界數量的資料。

若要瞭解更多資訊,請參閱

套件

PCollection 中元素的處理和提交/重試單位。Beam 不是同時處理 PCollection 中的所有元素,而是處理套件中的元素。執行器會處理集合分割成套件,並在這樣做的過程中,可能會針對使用案例最佳化套件大小。例如,串流執行器可能會處理比批次執行器更小的套件。

若要瞭解更多資訊,請參閱

編碼器

一種元件,描述如何編碼和解碼 PCollection 的元素。為了支援分散式處理和跨語言可攜性,Beam 需要能夠將 PCollection 的每個元素編碼為位元組。Beam SDK 提供內建的編碼器,用於常見類型和語言特定的機制來指定 PCollection 的編碼。

若要瞭解更多資訊,請參閱

CoGroupByKey

一種 PTransform,它採用兩個或多個 PCollection,並依鍵聚合元素。實際上,CoGroupByKey 會對具有相同鍵類型的兩個或多個鍵/值 PCollection 執行關係聯結。雖然 GroupByKey 會對單一輸入集合執行此運算,但 CoGroupByKey 會對多個輸入集合運作。

若要瞭解更多資訊,請參閱

集合

請參閱 PCollection

Combine

一種 PTransform,用於結合 PCollection 的所有元素或與鍵關聯的所有值。當您套用 Combine 轉換時,您必須提供一個使用者定義函式 (UDF),其中包含結合元素或值的邏輯。結合函式應該是可交換的可結合的,因為該函式不一定在具有給定鍵的所有值上恰好叫用一次。

若要瞭解更多資訊,請參閱

複合轉換

一種 PTransform,會展開為多個 PTransform。複合轉換具有巢狀結構,其中複雜的轉換會套用一個或多個更簡單的轉換。這些更簡單的轉換可以是現有的 Beam 運算,例如 ParDo、Combine 或 GroupByKey,或者它們可以是其他複合轉換。將多個轉換巢狀於單一複合轉換中,可以使您的管線更模組化且更容易理解。許多內建轉換都是複合轉換。

若要瞭解更多資訊,請參閱

計數器 (指標)

一種指標,報告單一長數值並且可以遞增。在 Beam 模型中,指標提供管線狀態的深入解析,可能在管線執行時。

若要瞭解更多資訊,請參閱

跨語言轉換

可以在 Beam SDK 之間共用的轉換。使用跨語言轉換,您可以在以不同 SDK 語言撰寫的管線中使用以任何支援的 SDK 語言(目前為 Java 和 Python)撰寫的轉換。例如,您可以在 Python 串流管線中使用 Java SDK 中的 Apache Kafka 連接器。跨語言轉換使得可以在不同的 SDK 中同時提供新功能。

若要瞭解更多資訊,請參閱

延遲執行

Beam 執行模型的一個特性。Beam 操作會被延遲,表示給定操作的結果可能無法用於控制流程。延遲執行讓 Beam API 能夠支援資料的平行處理並執行管線層級的最佳化。

分佈 (指標)

一個回報關於已回報數值分佈資訊的指標。在 Beam 模型中,指標提供管線狀態的洞察,可能在管線執行時就可提供。

若要瞭解更多資訊,請參閱

DoFn

一個由 ParDo(或其他轉換)用來處理 PCollection 元素,並經常產生輸出 PCollection 元素的函式物件。DoFn 是一個使用者定義的函式,表示它包含自訂程式碼,這些程式碼定義管線中的資料處理任務。Beam 系統會調用 DoFn 一次或多次來處理某些任意的元素組合,但 Beam 不保證確切的調用次數。

若要瞭解更多資訊,請參閱

驅動程式

一個定義您的管線的程式,包括所有輸入、轉換和輸出。若要使用 Beam,您需要使用其中一個 Beam SDK 的類別來建立驅動程式。驅動程式會建立一個管線,並指定執行選項,以告知管線在何處以及如何執行。這些選項包括執行器,它決定您的管線將在哪個後端上執行。

若要瞭解更多資訊,請參閱

元素

PCollection 中的資料單元。PCollection 中的元素可以是任何類型,但它們都必須具有相同的類型。這允許平行計算在整個集合中一致地運作。某些元素類型具有可以內省的結構(例如,JSON、Protocol Buffer、Avro 和資料庫記錄)。

若要瞭解更多資訊,請參閱

逐元素

一種獨立處理輸入 PCollection 中每個元素的轉換類型。逐元素處理類似於 MapReduce 模型中的 map 操作。逐元素轉換可能會針對每個輸入元素輸出 0、1 或多個值。這與聚合轉換形成對比,後者從多個輸入元素計算單一值。逐元素操作包括 Filter、FlatMap 和 ParDo。

如需逐元素轉換的完整列表,請參閱

引擎

一個資料處理系統,例如 Dataflow、Spark 或 Flink。引擎的 Beam 執行器會在該引擎上執行 Beam 管線。

事件時間

資料事件發生的時間,由元素上的時間戳記決定。這與處理時間相反,處理時間是元素在管線中被處理的時間。事件可以是使用者互動或寫入錯誤日誌等。無法保證事件會依事件時間順序出現在管線中,但視窗化和計時器可讓您正確推論事件時間。

若要瞭解更多資訊,請參閱

擴充服務

一種服務,使管線能夠套用(展開)在其他 SDK 中定義的跨語言轉換。例如,透過連接到 Java 擴充服務,Python SDK 可以套用在 Java 中實作的轉換。目前,SDK 通常會將擴充服務啟動為本機程序,但未來 Beam 可能會支援長時間運行的擴充服務。開發擴充服務是支援多語言管線的持續努力的一部分。

Flatten

核心 PTransform 之一。Flatten 將多個 PCollection 合併為單個邏輯 PCollection。

若要瞭解更多資訊,請參閱

Fn API

一個介面,讓執行器能夠調用特定於 SDK 的使用者定義函式。Fn API 與 Runner API 一起,支援混合和匹配 SDK 和執行器的能力。Fn 和 Runner API 一起使用,可讓新的 SDK 在每個執行器上執行,並讓新的執行器執行來自每個 SDK 的管線。

融合

Beam 執行器在執行管線之前可以套用的一種最佳化。當一個轉換輸出一個被另一個轉換使用的 PCollection 時,或者當兩個或更多轉換將相同的 PCollection 作為輸入時,執行器可能能夠將轉換融合在一起成為單一處理單元(在 Dataflow 中稱為「階段」)。取用 DoFn 會在產生 DoFn 發出元素時處理這些元素,而不是等待整個中間 PCollection 被計算出來。融合可以透過防止 I/O 操作來提高管線執行的效率。

量規 (指標)

一個回報已回報數值中最新值的指標。在 Beam 模型中,指標提供管線狀態的洞察,可能在管線執行時就可提供。由於指標是從許多工作程式收集而來,因此量規值可能不是絕對最後的值,但它將是其中一個工作程式產生的最新值之一。

若要瞭解更多資訊,請參閱

GroupByKey

一個用於處理鍵/值組集合的 PTransform。GroupByKey 是一種平行縮減操作,類似於 map/shuffle/reduce 演算法的 shuffle 操作。GroupByKey 的輸入是一個鍵/值組集合,其中多個組具有相同的鍵但不同的值(即多重映射)。您可以使用 GroupByKey 來收集與每個唯一鍵關聯的所有值。

若要瞭解更多資訊,請參閱

I/O 連接器

一組用於處理外部資料儲存系統的 PTransform。當您建立管線時,通常需要從外部資料系統(例如檔案或資料庫)讀取或寫入。Beam 提供多種常見資料儲存類型的讀取和寫入轉換。

若要瞭解更多資訊,請參閱

Map

一種逐元素的 PTransform,將使用者定義的函式 (UDF) 套用至 PCollection 中的每個元素。使用 Map,您可以將每個個別元素轉換為新元素,但您無法變更元素的數量。

若要瞭解更多資訊,請參閱

指標

關於管線狀態的資料,可能在管線執行時就可取得。您可以使用內建的 Beam 指標來深入了解管線的運作方式。例如,您可以使用 Beam 指標來追蹤錯誤、對後端服務的呼叫或已處理的元素數量。Beam 目前支援三種類型的指標:Counter、Distribution 和 Gauge。

若要瞭解更多資訊,請參閱

多語言管線

一個使用跨語言轉換的管線。您可以組合以任何支援的 SDK 語言(目前為 Java 和 Python)編寫的轉換,並在一個多語言管線中使用它們。

若要瞭解更多資訊,請參閱

ParDo

最低層級的逐元素 PTransform。對於輸入 PCollection 中的每個元素,ParDo 會套用一個函式,並將零個、一個或多個元素發送到輸出 PCollection。「ParDo」是「Parallel Do」的縮寫。它類似於 MapReduce 演算法中的 map 操作,以及在 GroupByKey 之後的 reduce 操作。ParDo 也可與 DataFrame 中的 apply 方法或 SQL 中的 UPDATE 關鍵字相比。

若要瞭解更多資訊,請參閱

Partition

一種逐元素的 PTransform,將單個 PCollection 分割成固定數量的較小的、不相交的 PCollection。Partition 需要使用者定義的函式 (UDF) 來決定如何將輸入集合的元素分割成產生的輸出集合。分割區的數量必須在圖表建構時決定,這表示您無法使用執行中的管線計算出的資料來決定分割區的數量。

若要瞭解更多資訊,請參閱

PCollection

一個可能分散式的、同質的資料集或資料串流。PCollection 代表 Beam 管線中的資料,而 Beam 轉換 (PTransform) 使用 PCollection 物件作為輸入和輸出。PCollection 旨在保持不可變性,表示一旦建立 PCollection,您就無法新增、移除或變更個別元素。「P」代表「parallel」。

若要瞭解更多資訊,請參閱

管線運算子 (|)

在 Python 管線中分隔步驟。例如:[最終輸出 PCollection] = ([初始輸入 PCollection] | [第一個轉換] | [第二個轉換] | [第三個轉換])。每個轉換的輸出會從左到右傳遞為下一個轉換的輸入。Python 中的管道運算子等同於 Java 中的 apply 方法(換句話說,管道將轉換套用於 PCollection),其用法類似於 shell 腳本中的管道運算子,可讓您將一個程式的輸出傳遞到另一個程式的輸入中。

若要瞭解更多資訊,請參閱

管線

您整個資料處理任務的封裝,包括從來源讀取輸入資料、轉換該資料,以及將輸出資料寫入接收器。您可以將管線視為使用 PTransform 來處理 PCollection 的 Beam 程式。(或者,您可以將其視為單個可執行的複合 PTransform,沒有輸入或輸出。)管線中的轉換可以表示為有向無環圖 (DAG)。所有 Beam 驅動程式都必須建立一個管線。

若要瞭解更多資訊,請參閱

處理時間

元素在管線中的某個階段被處理的實際時間。處理時間與事件時間不同,事件時間是資料事件發生的時間。處理時間由處理元素的系統上的時鐘決定。無法保證元素會依事件時間的順序處理。

若要瞭解更多資訊,請參閱

PTransform

管線中的資料處理操作或步驟。PTransform 接受零個或多個 PCollection 作為輸入,將處理函式套用到該 PCollection 的元素,並產生零個或多個輸出 PCollection。某些 PTransform 接受套用自訂邏輯的使用者定義函式。「P」代表「parallel」。

若要瞭解更多資訊,請參閱

資源提示

Beam 的一項功能,可讓您向執行器提供有關管線計算資源需求資訊。您可以使用資源提示來定義特定轉換或整個管線的需求。例如,您可以使用資源提示來指定要配置給工作程式的最小記憶體量。執行器負責解譯資源提示,而執行器可以忽略不支援的提示。

若要瞭解更多資訊,請參閱

執行器

執行器在特定平台上執行管線。大多數執行器都是大型平行大數據處理系統的翻譯器或轉接器。其他執行器用於本機測試和偵錯。支援的執行器包括 Google Cloud Dataflow、Apache Spark、Apache Samza、Apache Flink、Interactive Runner 和 Direct Runner。

若要瞭解更多資訊,請參閱

綱要

PCollection 元素的一種獨立於語言的類型定義。PCollection 的結構描述將該 PCollection 的元素定義為具名的已排序欄位列表。每個欄位都有一個名稱、一個類型,以及可能的一組使用者選項。結構描述提供了一種跨不同程式設計語言 API 推理類型的方法。它們還可讓您更簡潔且在更高層級描述資料轉換。

若要瞭解更多資訊,請參閱

工作階段

用於分組資料事件的時間間隔。工作階段由事件之間的一些最小間隔持續時間定義。例如,代表使用者滑鼠活動的資料串流可能具有高密度的點擊期間,然後是活動間隔的期間。工作階段可以表示由不活動分隔的這種活動模式。

若要瞭解更多資訊,請參閱

側輸入

提供給 PTransform 的額外輸入,它是以整體形式提供的,而不是逐元素提供。側輸入是您除了主要輸入 PCollection 之外提供的輸入。DoFn 每次處理 PCollection 中的元素時都可以存取側輸入。

若要瞭解更多資訊,請參閱

接收器

一種寫入外部資料儲存系統(如檔案或資料庫)的轉換。

若要瞭解更多資訊,請參閱

來源

一種從外部儲存系統讀取的轉換。管線通常會從來源讀取輸入資料。來源具有類型,可能與接收器類型不同,因此您可以在資料流經管線時變更資料格式。

若要瞭解更多資訊,請參閱

可分割的 DoFn

DoFn 的一般化,可讓您更容易建立複雜的模組化 I/O 連接器。可分割 DoFn (SDF) 可以以非單體的方式處理元素,這表示處理可以分解為較小的任務。透過 SDF,您可以檢查點元素的處理,並且可以分割剩餘的工作以產生額外的平行處理能力。建議使用 SDF 來建置新的 I/O 連接器。

若要瞭解更多資訊,請參閱

階段

管線中融合轉換的單元。執行器可以執行融合最佳化以提高管線執行的效率。在 Dataflow 中,管線概念化為融合階段的圖表。

狀態

PTransform 可以存取的持久值。狀態 API 允許您使用可變狀態來增強元素級操作(例如,ParDo 或 Map)。使用狀態 API,您可以在處理 PCollection 的每個元素時讀取和寫入狀態。您可以將狀態 API 與計時器 API 一起使用,以建立可讓您精細控制工作流程的處理任務。狀態始終是鍵和視窗的本地狀態。

若要瞭解更多資訊,請參閱

串流

一種用於處理無限或無界資料集的資料處理範例。從串流資料來源(例如 Pub/Sub 或 Kafka)讀取會建立無界的 PCollection。必須使用持續執行的作業來處理無界的 PCollection,因為整個集合永遠無法一次性用於處理。

若要瞭解更多資訊,請參閱

計時器

Beam 功能,可延遲處理使用狀態 API 儲存的資料。計時器 API 可讓您設定計時器,以便在事件時間或處理時間戳記回呼。您可以將計時器 API 與狀態 API 一起使用,以建立可讓您精細控制工作流程的處理任務。

若要瞭解更多資訊,請參閱

時間戳記

與 PCollection 中的元素關聯的事件時間點,用於將視窗指派給該元素。建立 PCollection 的來源會為每個元素指派一個初始時間戳記,通常對應於讀取或新增元素的時間。但是您也可以手動指派時間戳記。如果元素具有固有的時間戳記,但該時間戳記位於元素本身的結構中(例如,伺服器記錄項目中的時間欄位),這會很有用。

若要瞭解更多資訊,請參閱

轉換

請參閱 PTransform。

觸發器

決定何時從視窗發出聚合結果資料。您可以使用觸發器來調整管線的視窗策略。如果您使用預設視窗配置和預設觸發器,Beam 會在估計視窗的所有資料都已到達時輸出聚合結果,並捨棄該視窗的所有後續資料。但是您也可以使用觸發器來發出早期結果,在給定視窗中的所有資料到達之前,或者在事件時間浮水印經過視窗末尾後觸發,以處理延遲資料。

若要瞭解更多資訊,請參閱

無界資料

隨著時間推移而增長的資料集,其中的元素會在到達時處理。PCollection 可以是有界的或無界的,具體取決於其表示的資料來源。從串流或持續更新的資料來源(例如 Pub/Sub 或 Kafka)讀取,通常會建立無界的 PCollection。

若要瞭解更多資訊,請參閱

使用者定義函式

PTransform 套用至您的資料的自訂邏輯。某些 PTransform 接受使用者定義函式 (UDF) 作為配置轉換的方式。例如,ParDo 期望 DoFn 物件形式的使用者程式碼。每個語言 SDK 都有自己的慣用方式來表達使用者定義的函式,但有一些常見的要求,例如可序列化性和執行緒相容性。

若要瞭解更多資訊,請參閱

浮水印

對於管線此處(在未來)將會看到的時間戳記下限的估計。浮水印提供一種估計輸入資料完整性的方法。每個 PCollection 都有一個相關聯的浮水印。一旦浮水印超過視窗的末尾,則任何到達且時間戳記在該視窗中的元素都被視為延遲資料。

若要瞭解更多資訊,請參閱

視窗化

將 PCollection 分割為以個別元素時間戳記分組的有界子集。在 Beam 模型中,任何 PCollection(包括無界的 PCollection)都可以細分為邏輯視窗。根據 PCollection 的視窗函式,PCollection 中的每個元素都會指派給一個或多個視窗,並且每個單獨的視窗都包含有限數量的元素。聚合多個元素的轉換(例如 GroupByKey 和 Combine)會隱式地在每個視窗的基礎上運作。

若要瞭解更多資訊,請參閱

工作人員

處理管線平行處理某些部分的容器、程序或虛擬機器 (VM)。每個工作節點都有自己的獨立狀態副本。Beam 執行器可能會為了通訊目的以及其他原因(例如持久性)而在機器之間序列化元素。

若要瞭解更多資訊,請參閱