0

我正在使用 Spark。我有一个JavaPairRDD表格<Documentname, Tuple2<Phrase, URL>>

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

现在,我有几个重叠的短语(即“to be or”在“to be or not to be”中),我想删除这些包含在较大短语中的较短短语。

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

我知道如果我收集()元素,我可以创建一个双嵌套循环并执行此操作,但我想知道是否有办法在 Spark 中通过减少或聚合来执行此操作。

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

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

有任何想法吗?

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

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

4

1 回答 1

0

如果您按键(documentName)分组,您将拥有一个可以循环和处理(每个文档)的常规短语集合。只要短语的总数相对较小,这将起作用,这样集合就可以放入内存中。

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

于 2015-03-15T08:21:07.527 回答