2018年2月2日
摘要: 协同过滤算法原理 一、协同过滤算法的原理及实现 二、基于物品的协同过滤算法详解 一、协同过滤算法的原理及实现 协同过滤推荐算法是诞生最早,并且较为著名的推荐算法。主要的功能是预测和推荐。算法通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。协同过滤推荐 阅读全文
posted @ 2018-02-02 14:57 NightRaven 阅读(14122) 评论(1) 推荐(0) 编辑
  2018年1月30日
摘要: 1、reduce side join 在reduce端进行表的连接,该方法的特点就是操作简单,缺点是map端shffule后传递给reduce端的数据量过大,极大的降低了性能 连接方法: (1)map端读入输入数据,以连接键为Key,待连接的内容为value,但是value需要添加特别的标识,表示的 阅读全文
posted @ 2018-01-30 19:51 NightRaven 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 两个数据集中一个非常小,可以让小数据集存入缓存。在作业开始这些文件会被复制到运行task的节点上。 一开始,它的setup方法会检索缓存文件。 与reduce侧连接不同,Map侧连接需要等待参与连接的数据集满足如下条件: 1.除了连接键外,所有的输入都必须按照连接键排序。 输入的各种数据集必须有相同 阅读全文
posted @ 2018-01-30 19:35 NightRaven 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 样例输入: file1 file2 实验思路:我们设置一个新类myNewKey,这个类继承WritableComparable接口。然后我们把myNewKey写入map中,然后在map阶段中,实现自动排序,我们只需在reduce阶段输出就可以了。 代码: MyNewKey.java: import 阅读全文
posted @ 2018-01-30 18:23 NightRaven 阅读(220) 评论(0) 推荐(0) 编辑
摘要: "倒排索引"是文档检索系统中最常用的数据结构,被广泛地应用于全文搜索引擎。它主要是用来存储某个单词(或词组)在一个文档或一组文档中的存储位置的映射,即提供了一种根据内容来查找文档的方式。由于不是根据文档来确定文档所包含的内容,而是进行相反的操作,因而称为倒排索引(Inverted Index)。 实 阅读全文
posted @ 2018-01-30 10:13 NightRaven 阅读(279) 评论(0) 推荐(0) 编辑
  2018年1月29日
摘要: 多表关联和单表关联类似,它也是通过对原始数据进行一定的处理,从其中挖掘出关心的信息。 实例描述 输入是两个文件,一个代表工厂表,包含工厂名列和地址编号列;另一个代表地址表,包含地址名列和地址编号列。要求从输入数据中找出工厂名和地址名的对应关系,输出"工厂名——地址名"表: 样例输入如下所示: 工厂表 阅读全文
posted @ 2018-01-29 18:12 NightRaven 阅读(268) 评论(0) 推荐(0) 编辑
摘要: "单表关联"要求从给出的数据中寻找所关心的数据,它是对原始数据所包含信息的挖掘。 实例描述 给出child-parent(孩子——父母)表,要求输出grandchild-grandparent(孙子——爷奶)表。 输入 输出: 问题分析: 这个实例需要进行单表连接,连接的是左表的parent列和右表 阅读全文
posted @ 2018-01-29 18:07 NightRaven 阅读(412) 评论(0) 推荐(0) 编辑
  2018年1月28日
摘要: Reduce阶段三个步骤: Step2.1就是一个Shuffle[随机、洗牌]操作。 Shuffle是什么? 针对多个map任务的输出按照不同的分区(Partition)通过网络复制到不同的reduce任务节点上,这个过程就称作为Shuffle。 Shuffle过程: Map端: 1.在map端首先 阅读全文
posted @ 2018-01-28 19:57 NightRaven 阅读(190) 评论(0) 推荐(0) 编辑
摘要: Map阶段总共五个步骤:如图就是分区操作 哪个key到哪个Reducer的分配过程,是由Partitioner规定的。 Hadoop内置Partitioner MapReduce的使用者通常会指定Reduce任务和Reduce任务输出文件的数量(R)。 用户在中间key上使用分区函数来对数据进行分区 阅读全文
posted @ 2018-01-28 19:17 NightRaven 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 我们目前出现的瓶颈问题: 1.如果我们有10亿个数据,Mapper会生成10亿个键值对在网络间进行传输,但如果我们只是对数据求最大值,那么很明显的Mapper只需要输出它所知道的最大值即可。这样做不仅可以减轻网络压力,同样也可以大幅度提高程序效率。 总结:网络带宽严重被占降低程序效率; 2.假设使用 阅读全文
posted @ 2018-01-28 19:03 NightRaven 阅读(304) 评论(0) 推荐(0) 编辑