Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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

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
apachesparkjava8中的自连接示例_Java_Apache Spark - Fatal编程技术网

apachesparkjava8中的自连接示例

apachesparkjava8中的自连接示例,java,apache-spark,Java,Apache Spark,我有一个如下的数据集 Kolkata,30 Delhi,23 Lucknow,33 Lucknow,36 Delhi,31 Kolkata,34 Delhi,21 Kolkata,23 要进行自联接以获取表单的结果集 Lucknow -> (30, 36), Kolkata -> (30, 34), (34, 23), (23, 30). 如何使用Spark RDD实现这一点 JavaPairRDD<String, Integer> words = file.mapT

我有一个如下的数据集

Kolkata,30
Delhi,23
Lucknow,33
Lucknow,36
Delhi,31
Kolkata,34
Delhi,21
Kolkata,23
要进行自联接以获取表单的结果集

Lucknow -> (30, 36), Kolkata -> (30, 34), (34, 23), (23, 30).
如何使用Spark RDD实现这一点

JavaPairRDD<String, Integer> words = file.mapToPair(s ->{
    String[] temp = s.split(",");
    return new Tuple2<String, Integer>(temp[0], new Integer(temp[1]));
});        

JavaPairRDD<String, Iterable<Integer>> temp1 = words.groupByKey();        
JavaPairRDD<String, Iterable<Integer>> temp2 = words.groupByKey();            
JavaPairRDD<String, Tuple2<Iterable<Integer>, Iterable<Integer>>> words3 = temp2.join(temp1);
JavaPairRDD words=file.mapToPair(s->{
字符串[]temp=s.split(“,”);
返回新的Tuple2(temp[0],新的整数(temp[1]);
});        
javapairdd temp1=words.groupByKey();
javapairdd temp2=words.groupByKey();
javapairdd words3=temp2.join(temp1);
现在如何迭代元组?

要获得
的RDD,请在加入后使用
.groupByKey()

JavaPairRDD<String, Iterable<Tuple2<Integer>>> result = 
      words.join(words).groupByKey()
.groupByKey()
按键将所有值组合在一起,以便每个键只有一行,如下所示:

 (Kolkata, [(30,34), (30,23), (34,23), ...])
要获取
的RDD,请在加入后使用
.groupByKey()

JavaPairRDD<String, Iterable<Tuple2<Integer>>> result = 
      words.join(words).groupByKey()
.groupByKey()
按键将所有值组合在一起,以便每个键只有一行,如下所示:

 (Kolkata, [(30,34), (30,23), (34,23), ...])

对于每个唯一的键,rdd自连接产生值的置换对

要删除重复对(考虑到您的数据没有唯一键的重复值),filterduplicates()将从置换集中删除这些重复值对

//outside main function
type pair=(String,(Int,Int))

def filterduplicates(p:pair):Boolean={
return p._2._1<p._2._2
}    

//insidemain
val rdd=sc.textFile("../cities.txt")
val mapped=rdd.map(l=>l.split(",")).map(l=>(l(0),l(1).toInt))

val joined=mapped.join(mapped) 
//(Lucknow,(33,33)) (Lucknow,(33,36)) (Lucknow,(36,33)) (Lucknow,(36,36))

val grouped=joined.filter(filterduplicates)
//(Lucknow,(33,36))

val listt=grouped.groupByKey().mapValues(_.toList)
val finalresult=listt.collect()
finalresult.foreach(println)
//(Delhi,List((23,31), (21,23), (21,31)))(Kolkata,List((30,34),(23,30)  (23,34))) (Lucknow,List((33,36)))
//主函数外部
类型对=(字符串,(Int,Int))
def filterduplicates(p:pair):布尔值={
返回p.2.1l.split(“,”).map(l=>(l(0),l(1.toInt))
val join=已映射。连接(已映射)
//(勒克瑙,(33,33))(勒克瑙,(33,36))(勒克瑙,(36,33))(勒克瑙,(36,36))
val分组=已联接。筛选器(筛选器副本)
//(勒克瑙,(33,36))
val listt=grouped.groupByKey().mapValues(u.toList)
val finalresult=listt.collect()
最终结果foreach(println)
//(德里,名单((23,31),(21,23),(21,31))(加尔各答,名单((30,34),(23,30)(23,34)))(勒克瑙,名单((33,36)))

对于每个唯一的键,rdd自连接产生值的置换对

要删除重复对(考虑到您的数据没有唯一键的重复值),filterduplicates()将从置换集中删除这些重复值对

//outside main function
type pair=(String,(Int,Int))

def filterduplicates(p:pair):Boolean={
return p._2._1<p._2._2
}    

//insidemain
val rdd=sc.textFile("../cities.txt")
val mapped=rdd.map(l=>l.split(",")).map(l=>(l(0),l(1).toInt))

val joined=mapped.join(mapped) 
//(Lucknow,(33,33)) (Lucknow,(33,36)) (Lucknow,(36,33)) (Lucknow,(36,36))

val grouped=joined.filter(filterduplicates)
//(Lucknow,(33,36))

val listt=grouped.groupByKey().mapValues(_.toList)
val finalresult=listt.collect()
finalresult.foreach(println)
//(Delhi,List((23,31), (21,23), (21,31)))(Kolkata,List((30,34),(23,30)  (23,34))) (Lucknow,List((33,36)))
//主函数外部
类型对=(字符串,(Int,Int))
def filterduplicates(p:pair):布尔值={
返回p.2.1l.split(“,”).map(l=>(l(0),l(1.toInt))
val join=已映射。连接(已映射)
//(勒克瑙,(33,33))(勒克瑙,(33,36))(勒克瑙,(36,33))(勒克瑙,(36,36))
val分组=已联接。筛选器(筛选器副本)
//(勒克瑙,(33,36))
val listt=grouped.groupByKey().mapValues(u.toList)
val finalresult=listt.collect()
最终结果foreach(println)
//(德里,名单((23,31),(21,23),(21,31))(加尔各答,名单((30,34),(23,30)(23,34)))(勒克瑙,名单((33,36)))

我尝试使用groupByKey并再次创建一个副本并加入它们。我得到了JavaPairdd的形式。我需要迭代元组并评估自加入条件。不确定这是否是正确的方法请发布您在问题中尝试的代码!我想输出将与我尝试使用groupByKey并再次创建副本和加入他们。我得到了JavaPairRDD的形式。我需要通过元组进行迭代,并评估自连接条件。不确定这是否是正确的方法。请发布您在问题中尝试的代码!我认为输出将如下