Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较成对的数据,只是有时合并_Java_Apache Spark_Rdd_Combiners - Fatal编程技术网

Java 比较成对的数据,只是有时合并

Java 比较成对的数据,只是有时合并,java,apache-spark,rdd,combiners,Java,Apache Spark,Rdd,Combiners,我用的是Spark。我有一个javapairdd格式的 我基本上检查了URL指定的页面中是否有短语,从而形成了上面的结构 现在,我有几个重叠的短语(即“将来”或“在将来”或“不将来”),我想删除这些包含在较大短语中的较短短语 我对Spark有点陌生,所以我不知道如何在Spark内做到这一点 我知道如果我收集()元素,我可以创建一个双嵌套循环,但我想知道是否有一种方法可以在Spark中通过减少或聚合来实现 基本上,我需要一个函数来检查每对短语,如果一个短语不包含在另一个短语中,则返回两个短语;如果

我用的是Spark。我有一个
javapairdd
格式的

我基本上检查了URL指定的页面中是否有短语,从而形成了上面的结构

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

我对Spark有点陌生,所以我不知道如何在Spark内做到这一点

我知道如果我收集()元素,我可以创建一个双嵌套循环,但我想知道是否有一种方法可以在Spark中通过减少或聚合来实现

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

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

有什么想法吗

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

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

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


如果您需要以分布式方式执行此操作,则需要使用平面图将密钥转换为DodumentName+短语,以便以后可以通过相似性减少(组合)

据我所知,
combineByKey
(及其派生项)无法转换密钥,因此“是或”和“是或不是”不会被认为是平等的。你能改变你构造原始RDD的方式,使键自动标准化为最长的值吗?我想我将不得不求助于一种“非火花”的处理方式。是的,我在结尾得到的短语数量相对较少,问题是它仍然在Spark框架中处理,并且存在并发问题。