篩選器
![]() |
給定一個述詞,篩選出所有不滿足該述詞的元素。也可以用於根據元素的比較順序,根據與給定值的不等式進行篩選。
範例
在以下範例中,我們建立一個具有農產品 PCollection
的管線,其中包含它們的圖示、名稱和持續時間。然後,我們以多種方式套用 Filter
,根據其持續時間值篩選農產品。
Filter
接受一個函式,該函式保留傳回 True
的元素,並篩選掉其餘元素。
範例 1:使用函式篩選
我們定義一個函式 is_perennial
,如果元素的持續時間等於 'perennial'
,則傳回 True
,否則傳回 False
。
範例 2:使用 lambda 函式篩選
我們也可以使用 lambda 函式來簡化範例 1。
範例 3:使用多個引數篩選
您可以將具有多個引數的函式傳遞給 Filter
。它們會作為額外的位置引數或關鍵字引數傳遞給函式。
在此範例中,has_duration
會將 plant
和 duration
作為引數。
範例 4:將側輸入作為單例篩選
如果 PCollection
具有單一值,例如來自另一個計算的平均值,則將 PCollection
作為單例傳遞會存取該值。
在此範例中,我們將值 'perennial'
的 PCollection
作為單例傳遞。然後,我們使用該值來篩選多年生植物。
範例 5:將側輸入作為迭代器篩選
如果 PCollection
具有多個值,請將 PCollection
作為迭代器傳遞。這會在需要時延遲存取元素,因此可以迭代不適合記憶體的大型 PCollection
。
注意:您可以使用
beam.pvalue.AsList(pcollection)
將PCollection
作為清單傳遞,但這需要所有元素都適合記憶體。
範例 6:將側輸入作為字典篩選
如果 PCollection
小到足以放入記憶體,則可以將該 PCollection
作為字典傳遞。每個元素都必須是 (key, value)
配對。請注意,PCollection
的所有元素都必須適合記憶體才能執行此操作。如果 PCollection
不適合記憶體,請改用 beam.pvalue.AsIter(pcollection)
。
相關轉換
![]() |
上次更新於 2024/10/31
您是否找到您要尋找的所有內容?
所有內容是否實用且清楚?您是否有任何想要變更的內容?請告訴我們!