CombineValues
![]() |
組合索引鍵集合中值的可迭代項目。
請參閱 Beam 程式設計指南 以取得更多資訊。
範例
在下列範例中,我們會建立一個具有農產品 PCollection
的管線。然後,我們會以多種方式套用 CombineValues
,以組合 PCollection
中索引鍵的值。
CombineValues
接受一個函式,該函式將元素 iterable
作為輸入,並將它們組合以傳回單一元素。 CombineValues
需要一個索引鍵的元素 PCollection
,其中值是要組合的元素 iterable
。
範例 1:使用預先定義的函式組合
我們使用函式 sum
,它會採用數字的 iterable
並將它們加總在一起。
範例 2:使用函式組合
我們希望總和限制在最大值內,因此我們使用 飽和算術。
我們定義一個函式 saturated_sum
,它會採用數字的 iterable
並將它們加總在一起,直到達到預先定義的最大值。
範例 3:使用 lambda 函式組合
我們也可以使用 lambda 函式來簡化範例 2。
範例 4:使用多個引數組合
您可以將具有多個引數的函式傳遞給 CombineValues
。它們會作為額外的位置引數或關鍵字引數傳遞給函式。
在此範例中,lambda 函式會採用 values
和 max_value
作為引數。
範例 5:使用 CombineFn
組合
組合元素更一般的方式,也是最彈性的方式,是使用從 CombineFn
繼承的類別。
CombineFn.create_accumulator()
:這會建立一個空的累加器。例如,總和的空累加器將為0
,而乘積(乘法)的空累加器將為1
。CombineFn.add_input()
:每個元素呼叫一次。採用累加器和輸入元素,將它們組合並傳回更新的累加器。CombineFn.merge_accumulators()
:多個累加器可以平行處理,因此此函式有助於將它們合併為單一累加器。CombineFn.extract_output()
:它允許在擷取結果之前執行額外的計算。
相關轉換
您可以使用下列組合器轉換
![]() |
上次更新於 2024/10/31
您是否找到您要尋找的所有內容?
所有內容都實用且清楚嗎?您有任何想要變更的內容嗎?請告訴我們!