Java 比较成对的数据,只是有时合并
我用的是Spark。我有一个Java 比较成对的数据,只是有时合并,java,apache-spark,rdd,combiners,Java,Apache Spark,Rdd,Combiners,我用的是Spark。我有一个javapairdd格式的 我基本上检查了URL指定的页面中是否有短语,从而形成了上面的结构 现在,我有几个重叠的短语(即“将来”或“在将来”或“不将来”),我想删除这些包含在较大短语中的较短短语 我对Spark有点陌生,所以我不知道如何在Spark内做到这一点 我知道如果我收集()元素,我可以创建一个双嵌套循环,但我想知道是否有一种方法可以在Spark中通过减少或聚合来实现 基本上,我需要一个函数来检查每对短语,如果一个短语不包含在另一个短语中,则返回两个短语;如果
javapairdd
格式的
我基本上检查了URL指定的页面中是否有短语,从而形成了上面的结构
现在,我有几个重叠的短语(即“将来”或“在将来”或“不将来”),我想删除这些包含在较大短语中的较短短语
我对Spark有点陌生,所以我不知道如何在Spark内做到这一点
我知道如果我收集()元素,我可以创建一个双嵌套循环,但我想知道是否有一种方法可以在Spark中通过减少或聚合来实现
基本上,我需要一个函数来检查每对短语,如果一个短语不包含在另一个短语中,则返回两个短语;如果一个短语不包含在另一个短语中,则返回一个短语
或者,我想运行某种过滤器来删除这些较短的短语
有什么想法吗
编辑:我认为CombinebyKey或AggregateByKey都可以,但我不知道如何在Java中使用它们。什么是序列/组合器功能
我想按键组合>的几个元素,并有一个元组列表,其中一个短语不包含在任何其他短语中。如果您按键分组(documentName),您将有一个定期的短语集合,可以循环和处理(每个文档)。只要短语的总数相对较少,这样集合就可以放入内存中
如果您需要以分布式方式执行此操作,则需要使用平面图将密钥转换为DodumentName+短语,以便以后可以通过相似性减少(组合)据我所知,
combineByKey
(及其派生项)无法转换密钥,因此“是或”和“是或不是”不会被认为是平等的。你能改变你构造原始RDD的方式,使键自动标准化为最长的值吗?我想我将不得不求助于一种“非火花”的处理方式。是的,我在结尾得到的短语数量相对较少,问题是它仍然在Spark框架中处理,并且存在并发问题。