我有一個大數據文件(1TB)的數據導入到BigQuery。每行包含一個鍵。在導入數據並創建我的PCollection以導出到BigQuery時,我想確保不會根據此鍵值導入重複記錄。在我的Java程序中做這件事最有效的方法是什麼?使用數據流刪除重複
感謝
我有一個大數據文件(1TB)的數據導入到BigQuery。每行包含一個鍵。在導入數據並創建我的PCollection以導出到BigQuery時,我想確保不會根據此鍵值導入重複記錄。在我的Java程序中做這件事最有效的方法是什麼?使用數據流刪除重複
感謝
在數據流GroupByKey概念允許任意分組,它可以被利用來從PCollection刪除重複項。
最通用的辦法解決這個問題將是:從源文件中讀取
其中的一些步驟可以省略 ,如果你要解決的一般 問題的特定特例。
特別是,如果整個記錄被認爲是一個關鍵,那麼問題可以簡化爲只運行Count變換並遍歷生成的PCollection。
下面是一個近似的代碼示例GroupByKey:
PCollection<KV<String, Doc>> urlDocPairs = ...;
PCollection<KV<String, Iterable<Doc>>> urlToDocs =
urlDocPairs.apply(GroupByKey.<String, Doc>create());
PCollection<KV<String, Doc>> results = urlToDocs.apply(
ParDo.of(new DoFn<KV<String, Iterable<Doc>>, KV<String, Doc>>() {
public void processElement(ProcessContext c) {
String url = c.element().getKey();
Iterable<Doc> docsWithThatUrl = c.element().getValue();
// return a pair of url and an element from Iterable<Doc>.
}}));
嗨 - 我能得到RemoveDuplicates變換正常工作。我想知道將數據流報告中的重複項數量抑制或作爲多重輸出重複項的關鍵字會涉及什麼? – 2015-03-06 18:31:01