博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sparkCore RDD join
阅读量:7143 次
发布时间:2019-06-29

本文共 2133 字,大约阅读时间需要 7 分钟。

hot3.png

1.目的

    找出人际关系圈中的三角环状关系(A->B,B->C,C->A)

2.素材

    text1.txt

1 tom 2 jack friend2 jack 3 sala friend3 sala 1 tom friend4 joy 1 tom friend1 tom 4 joy friend1 tom 4 joy friend2 jack 5 Missing friend

3.代码

package testimport org.apache.log4j.{Level, Logger}import org.apache.spark.{SparkContext, SparkConf}import org.apache.spark.graphx._import org.apache.spark.rdd.RDDobject join {  def main(args: Array[String]) {    //屏蔽日志    Logger.getLogger("org.apache.spark").setLevel(Level.WARN)    Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)    //设置运行环境    val conf = new SparkConf().setAppName("test1").setMaster("local")    val sc = new SparkContext(conf)    //引入text文件    val File:RDD[String] = sc.textFile("e:\\text1.txt")    //创建两个列反向的RDD    //aid1,aid2    val edgea = File.map { e =>      val fields = e.split(" ")      (fields(0).toLong,fields(2).toLong)    }    //bid1,bid2    val edged = File.map { e =>      val fields = e.split(" ")      (fields(2).toLong,fields(0).toLong)    }    //RDD一次关联    val edge_rel=edgea.join(edged).map{case (aid1,(aid2,did2))=>(did2,(aid1,aid2))}    println("edge_rel:")    println(edge_rel.collect.mkString("\n"))    //RDD二次关联    val edge_final=edge_rel.join(edged).map{case (aid1,((aid2,aid3),aid4))=>(aid4,aid1,aid2,aid3)}    println("edge_final:")    println(edge_final.collect.mkString("\n"))    //筛选有向环    val edge_match=edge_final.filter{case (id1,id2,id3,id4)=>id1==id4}    println("edge_match:")    println(edge_match.collect.mkString("\n"))    //最终环状结构    val edge_tri=edge_match.map{case (id1,id2,id3,id4)=>(id1,id2,id3)}    println("edge_tri:")    println(edge_tri.collect.mkString("\n"))    //环状结构去重    val edge_unique=edge_tri.filter{case (id1,id2,id3)=>id1

4.输出

edge_rel:(1,(4,1))(1,(4,1))(3,(1,2))(4,(1,2))(3,(1,4))(4,(1,4))(3,(1,4))(4,(1,4))(2,(3,1))(1,(2,3))(1,(2,5))edge_final:(1,4,1,2)(1,4,1,2)(1,4,1,4)(1,4,1,4)(1,4,1,4)(1,4,1,4)(3,1,4,1)(4,1,4,1)(3,1,4,1)(4,1,4,1)(3,1,2,3)(4,1,2,3)(3,1,2,5)(4,1,2,5)(2,3,1,2)(2,3,1,4)(2,3,1,4)(1,2,3,1)edge_match:(3,1,2,3)(2,3,1,2)(1,2,3,1)edge_tri:(3,1,2)(2,3,1)(1,2,3)edge_unique:(1,2,3)

 

转载于:https://my.oschina.net/puwenchao/blog/710976

你可能感兴趣的文章
JS字符串函数
查看>>
mCustomScrollbar的使用
查看>>
modeler与activiti进行整合
查看>>
性能调优攻略
查看>>
关于压力测试(回应一下奋斗中的灵感之源 之 到底SQLite有多强?在我的2台机器上的压力测试 )...
查看>>
string扩展实现强悍的.Net不可逆加密方法 (转载)
查看>>
网络结构设计——负载均衡学习笔记(一)
查看>>
IT增值服务,客户案例(一)--山东青岛在职人士,2年.Net经验,转Java开发半年
查看>>
Tengine安装./configure: error: C compiler cc is not found
查看>>
DotNetNuke 5 User's Guide Get Your Website Up and Running读书摘录4
查看>>
在进行form提交时,根据form的选择,在javascript中进行特定提交
查看>>
像这样玩C#
查看>>
shu_1016 栈
查看>>
js限制输入(转载)
查看>>
玩游戏,学RxJS
查看>>
PostgreSQL在何处处理 sql查询
查看>>
2.6. Routing
查看>>
JSON-JSON 百科
查看>>
linux AIO (异步IO) 那点事儿 [转]
查看>>
改善C#程序的建议8:避免锁定不恰当的同步对象
查看>>