我有一个大数据文件(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