文章 56
评论 98
浏览 271600
mapreduce之数据去重和数据排序实例

mapreduce之数据去重和数据排序实例

数据去重: 数据去重,只是让出现的数据仅一次,所以在 reduce 阶段 key 作为输入,而对于 values-in 没有要求,即输入的 key 直接作为输出的 key,并将 value 置空。具体步骤类似于 wordcount: Tip:输入输出路径配置。 import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.m

hadoop平台wordcount程序的python实现

hadoop平台wordcount程序的python实现

摘要: ​尽管 Hadoop 框架是用 Java 写的,但是 Hadoop 程序不限于 Java,可以用 python、C++、Ruby 等。本例子中直接用 python 写一个 MapReduce 实例,而不是用 Jython 把 python 代码转化成 jar 文件。 例子的目的是统计输入文件的单词的词频。 输入:文本文件 输出:文本(每行包括单词和单词的词频,两者之间用'\t'隔开) Python MapReduce 代码 使用 python 写 MapReduce 的“诀窍”是利用 Hadoop 流的 API,通过 STDIN(标准输入)、STDOUT(标准输出)在 Map 函数和 Reduce 函数之间传递数据。 我们唯一需要做的是利用 Python 的 sys.stdin 读取输入数据,并把我们的输出传送给 sys.stdout。Hadoop 流将会帮助我们处理别的任何事情。 Map 阶段:mapper.py 在这里,我们假设把文件保存到 hadoop-0.20.2/test/code/mapper.py #!/usr/bin/env python import s....

MapReduce实现自定义二次排序

MapReduce实现自定义二次排序

摘要: MapReduce 框架对处理结果的输出会根据 key 值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的。在我们实际的需求当中,往往有要对 reduce 输出结果进行二次排序的需求。对于二次排序的实现,网络上已经有很多人分享过了,但是对二次排序的实现的原理以及整个 MapReduce 框架的处理流程的分析还是有非常大的出入,而且部分分析是没有经过验证的。本文将通过一个实际的 MapReduce 二次排序例子,讲述二次排序的实现和其 MapReduce 的整个处理流程,并且通过结果和 map、reduce 端的日志来验证所描述的处理流程的正确性。 概述 MapReduce 框架对处理结果的输出会根据 key 值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的。在我们实际的需求当中,往往有要对 reduce 输出结果进行二次排序的需求。对于二次排序的实现,网络上已经有很多人分享过了,但是对二次排序的实现的原理以及整个 MapReduce 框架的处理流程的分析还是有非常大的出入,而且部分分析是没有经过验证的。本文将通过一个实际的 MapRedu....

Kmeans算法解析及基于MapReduce的并行化实现

Kmeans算法解析及基于MapReduce的并行化实现

Kmeans算法,最为经典的基于划分的聚类方法 Kmeans算法: k-means 算法接受参数 k ;然后将事先输入的n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。 K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。 假设要把样本集分为c个类别,算法描述如下: (1)适当选择c个类的初始中心; (2)在第k次迭代中,对任意一个样本,求其到c个中心的距离,将该样本归到距离最短的中心所在的类; (3)利用均值等方法更新该类的中心值; (4)对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。 该算法的最大优势在于简洁和快速。算法的关键在于初始中心的选择和距离公式。

hadoop下基于mapreduce实现pagerank算法

hadoop下基于mapreduce实现pagerank算法

摘要: PageRank,网页排名,又称网页级别、Google左侧排名或佩奇排名,是一种由[1] 根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。Google的创始人拉里·佩奇和谢尔盖·布林于1998年在斯坦福大学发明了这项技术。 PageRank通过网络浩瀚的超链接关系来确定一个页面的等级。Google把从A页面到B页面的链接解释为A页面给B页面投票,Google根据投票来源(甚至来源的来源,即链接到A页面的页面)和投票目标的等级来决定新的等级。简单的说,一个高等级的页面可以使其他低等级页面的等级提升。 PageRank的核心公式是: PR(A)=(1-d)+d(PR(B)/C+PR(C)/C……PR(Z)/C) - PR(A)是指网页A的PR数值 - PR(i)是链接向A页面的i页面的PR值 - C是网页i往其他页面输出的链接的数量 - d是一个常数,谷歌设置为0.

鲜衣怒马提银枪,一日看尽长安花,此间少年。