找出共同好友 - 数据挖掘 - Scala版
大家好,关于“找出共同好友”的算法,网上有不少语言的实现,今天有空之余,自己研究了下Scala算法的写法
完整代码可以参考Git地址:https://github.com/benben7466/SparkDemo/blob/master/spark-test/src/main/scala/testCommendFriend.scala
录入的数据:
A:B,C,D,F,E,O B:A,C,E,K C:F,A,D,I D:A,E,F,L E:B,C,D,M,L F:A,B,C,D,E,O,M G:A,C,D,E,F H:A,C,D,E,O I:A,O J:B,O K:A,C,D L:D,E,F M:E,F,G O:A,H,I,J
核心算法:
 package chunbo.recommend
 import org.apache.spark.SparkContext
 //共同好友统计问题
 //参考:http://www.cnblogs.com/charlesblc/p/.html
 object testCommendFriend {
   def index(_spark_sc: SparkContext): Unit = {
     //获取数据
     val friendRDD = _spark_sc.textFile(Config.HDFS_HOSH + "test/common_friend")
     //map
     val friendKV = friendRDD.map(x => {
       val fields = x.split(":")
       val person = fields()
       val friends = fields().split(",").toList
       (person, friends)
     })
     val mapRDD = friendKV.flatMap(x => {
        until x._2.length) yield (x._2(i), x._1)
     })
     //reduce
     val reduceRDD = mapRDD.reduceByKey(_ + "::" + _)
     //打印
     reduceRDD.foreach(println)
   }
 }
参考:http://www.cnblogs.com/charlesblc/p/6126346.html
找出共同好友 - 数据挖掘 - Scala版的更多相关文章
- MapReduce 找出共同好友
		这个前提需要注意:好友之间的关系是单向的,我的好友队列里有你,你的里面不一定有我.所以思考方式需要改变. 共同好友: 某两个人的好友队列里都有的人. 第一个mapper 和 reducer 简单说:找 ... 
- 【Todo】找出共同好友 & Spark & Hadoop面试题
		找了这篇文章看了一下面试题<Spark 和hadoop的一些面试题(准备)> http://blog.csdn.net/qiezikuaichuan/article/details/515 ... 
- PostGIS 爆管分析之找出上游阀门(优化版)
		说明 前面描述过利用postgis查找上游阀门的原理,以及代码,其实当初写完就发现又很大的优化空间,但一直没有时间去做. 最近遇到一个情况,处理60w+条管网数据时,效率太慢了,于是腾时间优化了一版. ... 
- 一句话的代码,从集合中找出第一个重复字符的方法javascript版。
		有的时候需求是这样的: 找出集合中第一个重复的字符所在的位置,刚才看了园内某自许为算法的代码,感觉非常之啰嗦故写了以下代码! 本人对神马算法之类的完全不懂,但那些伪算法家们也别出来装蒜.一句话:不要欺 ... 
- 剑指offer:1.找出数组中重复的数(java版)
		数组中重复的数:题目:找出数组中重复的数,题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任 ... 
- 【原创】Kafka producer原理 (Scala版同步producer)
		本文分析的Kafka代码为kafka-0.8.2.1.另外,由于Kafka目前提供了两套Producer代码,一套是Scala版的旧版本:一套是Java版的新版本.虽然Kafka社区极力推荐大家使用J ... 
- 【转】Kafka producer原理 (Scala版同步producer)
		转载自:http://www.cnblogs.com/huxi2b/p/4583249.html 供参考 本文分析的Kafka代码为kafka-0.8.2.1.另外,由于Kafka目前提供了两 ... 
- Facebook存储技术方案:找出“暖性BLOB”数据
		Facebook公司已经在其近线存储体系当中彻底弃用RAID与复制机制,转而采用分布式擦除编码以隔离其所谓的“暖性BLOB”. 暖性?BLOB?这都是些什么东西?大家别急,马上为您讲解: BLOB—— ... 
- Python每日一练(2):找出html中的所有链接(Xpath、正则两个版本)
		要在hrml文件中找出特定的内容,首先需要观察该内容是什么东西,在什么位置,这样才能找出来. 假设html的文件名称是:"1.html".href属性全都在a标签里. 正则版: # ... 
随机推荐
- 安利一波那个叫做 hutool 的通用工具类库
			摘自3.1.1版本作者发布原话,当时看到有点说不上的情绪,为作者的坚持.热爱点个赞. 已经想不起来是怎样结识 Hutool 的,但 Hutool 伴随几个项目的推进,获得了同事一致好评. 没经过实践和 ... 
- maven搭建MVC项目具体步骤
			一.目标 在这篇文章中,我将要向您展示如何使用spring Frameworks 和 Maven build创建您的第一个J2ee 应用程序. 二.信息 Maven是一个Java项目的构建工具(或者自 ... 
- Redis基本认识和基础学习-基本命令
			Redis 基本介绍 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANS ... 
- YYHS-猜数字(并查集/线段树维护)
			题目描述 LYK在玩猜数字游戏. 总共有n个互不相同的正整数,LYK每次猜一段区间的最小值.形如[li,ri]这段区间的数字的最小值一定等于xi. 我们总能构造出一种方案使得LY ... 
- angular高级篇之transclude使用详解
			angular指令的transclude属性是一个让初学者比较难以理解的地方,transclude可以设置为false(默认),true或者对象三种值,如果不设该属性就默认为false,也就是说你不需 ... 
- IsoAlgo3d - A PCF 3D Viewer for Desktop, Tablet and Smart phone
			IsoAlgo3d - A PCF 3D Viewer for Desktop, Tablet and Smart phone eryar@163.com Abstract. IsoAlgo3d 通过 ... 
- J - Scarily interesting! URAL - 2021
			This year at Monsters University it is decided to arrange Scare Games. At the Games all campus gathe ... 
- 模拟制作网易云音乐(AudioContext)
			记得好早前在慕课网上看到一款可视化音乐播放器,当前是觉得很是神奇,还能这么玩.由于当时刚刚转行不久,好多东西看得稀里糊涂不明白,于是趁着现在有时间又重新梳理了一遍,然后参照官网的API模拟做了一款网易 ... 
- 事件    event
			添加移除函数(removeEventListener)时三个参数保持一致,否则会失败,而且不会有错误提示 var btn = document.getElementById(“myBtn”); btn ... 
- Java多线程Master-Worker模式
			Java多线程Master-Worker模式,多适用于需要大量重复工作的场景中. 例如:使用Master-Worker计算0到100所有数字的立方的和 1.Master接收到100个任务,每个任务需要 ... 
