我想使用數據流採樣靜態數據源。我知道有一個Sample
轉換,它允許您對固定數量的數據元組進行採樣,但在我的用例中有所不同的是,根據實際的源大小,我的目標採樣數是動態的。使用動態採樣計數對採樣進行採樣
我知道有一種方法是,我可以首先計算我的數據源,計算我的抽樣概率,並使用ParDo過濾我的pcollection,在每個DoFn內翻轉硬幣。
然而,一個缺點是尤其是當我的概率非常低(例如,如果我想從500M +池中挑選50個樣本隨機),它似乎不是很穩定。
所以我只是想知道,有沒有更好的辦法呢? (不知怎的,我認爲這只是一些數據流的黑客,我不知道)
編輯:
遺憾的混亂。問題是我不知道預先來源的大小,他們可能範圍從1M到500M,並根據我的實際大小,我想以不同的方式對它進行抽樣,例如我的樣本大小是min(actual_size,2.5e10 /( actual_size)),這使得當我的源碼大小恰好爲500M時,我只想要其中的50個。當我的實際大小爲5M,我想品嚐5000
我特別想知道: 是否有任何內置PTranform
,我可以用這個特定使用案例(比如我可以用Sample
只是一些解決方法嗎?)
你可以分享更多關於你希望樣本大小與輸入大小相關的細節嗎?從你的例子來看,你似乎可以選擇一個50/500M的概率,而且應該做你想要的。 –