比较数据对,有时仅合并

时间:2015-03-14 22:21:04

标签: java apache-spark rdd combiners

我正在使用Spark。我有[{1}}形式的JavaPairRDD

我基本上检查了一个短语是否在URL指定的页面中,从而产生了上面的结构。

现在,我有几个重叠的短语(即“成为或”在“成为或不成为”),我想删除较大短语中包含的这些较短的短语。

我对Spark有点新,所以我不确定如何在Spark 中执行此操作。

我知道我可以创建一个双嵌套循环,如果我收集()元素,我会这样做,但我想知道是否有办法在Spark中进行减少或聚合。

基本上,我想要一个能检查每对短语的函数,如果一个短语不包含在另一个短语中,或者只返回一个短语,则返回两个短语。

或者,我想运行某种过滤器来删除这些较短的短语。

有什么想法吗?

编辑:我认为CombinebyKey或AggregateByKey都可以使用,但我不知道如何在Java中使用它们。什么是序列/组合器功能?

我想结合几个>的元素按键,并有一个元组列表,其中一个短语不包含在任何其他短语中。

1 个答案:

答案 0 :(得分:0)

如果您按键分组(documentName),您可以定期收集短语,并循环处理(每个文档)。只要短语的总数相对较小,这将起作用,因此集合将适合内存。

如果您需要以分布式方式执行此操作,则需要执行flatMap将密钥转换为DodumentName + Phrase,以便以后您能够通过相似性减少(组合)