MapReduce初级案例——数据排序

“ 数据排序”是许多实际任务执行时要完成的第一项工作,比如学生成绩评比、 数据建立索引等。这个实例和数据去重类似,都是先对原始数据进行初步处理,为进一步的数据操作打好基础。下面进入这个示例。

1 实例描述

对输入文件中数据进行排序。 输入文件中的每行内容均为一个数字, 即一个数据。要求在输出中每行有两个间隔的数字,其中, 第一个代表原始数据在原始数据集中的位次, 第二个代表原始数据。

样例输入:

(1) file1:

(2) file2:

(3) file3:

样例输出:

2 设计思路

这个实例仅仅要求对输入数据进行排序,熟悉 MapReduce 过程的读者会很快想到在MapReduce 过程中就有排序,是否可以利用这个默认的排序,而不需要自己再实现具体的排序呢?答案是肯定的。

但是在使用之前首先需要了解它的默认排序规则。它是按照 key 值进行排序的,如果key 为封装 int 的 IntWritable 类型,那么 MapReduce 按照数字大小对 key 排序,如果 key为封装为 String 的 Text 类型,那么 MapReduce 按照字典顺序对字符串排序。

了解了这个细节,我们就知道应该使用封装 int 的 IntWritable 型数据结构了。也就是在map 中将读入的数据转化成 IntWritable 型,然后作为 key 值输出( value 任意)。 reduce 拿到之后,将输入的 key 作为 value 输出,并根据 value-list 中元素的个数决定输出的次数。输出的 key(即代码中的 linenum)是一个全局变量,它统计当前 key 的位次。

需要注意的是这个程序中没有配置 Combiner,也就是在 MapReduce 过程中不使用 Combiner。这主要是因为使用 map 和 reduce 就已经能够完成任务了。

3 程序代码

程序代码如下所示:

4 代码结果

(1)准备测试数据

通过 Eclipse 下面的“ DFS Locations”在“ /user/hadoop”目录下创建输入文件“ sort_in”文件夹( 备注:“ sort_out”不需要创建。)如图 2.4-1 所示,已经成功创建。

然后在本地建立三个 txt 文件,通过 Eclipse 上传到“ /user/hadoop/sort_in”文件夹中,三个 txt 文件的内容如“实例描述”那三个文件一样。如图 2.4-2 所示,成功上传之后。从 SecureCRT 远处查看“ Master.Hadoop”的也能证实我们上传的三个文件。

查看两个文件的内容如图 2.4-3 所示:

(2)查看运行结果

这时我们右击 Eclipse 的“ DFS Locations”中“ /user/hadoop”文件夹进行刷新,这时会发现多出一个“ sort_out”文件夹,且里面有 3 个文件,然后打开双其“ part-r-00000”文件,会在 Eclipse 中间把内容显示出来。如图 2.4-4 所示。

本文作者:虾皮

来源:51CTO

时间: 2024-09-23 01:24:38

MapReduce初级案例——数据排序的相关文章

如何实现XML+XSL+javascript数据排序

javascript|xml|排序|数据 如何实现XML+XSL+javascript数据排序 数据排序模版<?xml version="1.0" encoding="gb2312" ?><xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/

数组数据排序的程序例子

数组数据排序的程序例子 <% ''*** build example array to show that this thing can sort ''*** alpha-numeric arrays Dim MyArray MyArray = Array(1,5,"shawn","says","hello"2m骺噃嶤123,12,98) MyArray = Sort(MyArray) For I = 0 to Ubound(MyArray

数据排序及如何动态排序

数据排序及如何动态排序 //Belltree//http://www.lurer.net/ //初学XML,错误之处多多,各路高手多多指正 在<xsl:for-each select="//item" order-by="text()">及<xsl:apply-templates select="//item"/>中都可以看到order-by属性,该属性可以对选出来的节点按照order-by的值进行排序. <sing

ASP.NET中实现DataGrid数据排序

asp.net|datagrid|排序|数据 Visual Studio .Net为编写WinForm程序(即:在Windows平台下运行的程序)所提供的DataGrid组件比起微软以往的各种开发环境中提供的DataGrid组件都要"高级"许多.其"高级"的地方就在于不需要再进行任何其他设置或编程,DataGrid就能够对其中的数据分别按照升.降序进行排列.这种"高级"功能给我们编程提供了许多方便.图01是在WinForm程序中的DataGrid

WPS中用COUNTIF函数来给数据排序

RANK函数常被用来给数据排序.但如果我们使用WPS Office 2003中的金山表格来排定数字大小名次的话,会发现在这个版本的金山表格中没有RANK函数. 那么,在没有RANK函数的情况下,如何给数字排定大小顺序呢?其实,我们可以使用COUNTIF函数来完成这个任务. 假定数字序列在H2:H20单元格.各数字的名次排在I2:I20单元格.那么点击I2单元格,输入如下公式:"=COUNTIF($G$2:$G$20,">"&G2)+1"(不含外层双引号

在Excel表格中按行对数据排序的方法

  在Excel表格中按行对数据排序的方法          1.启动Excel 2013并打开工作表,选择工作表中的所有数据.打开"排序"对话框,单击"选项"按钮打开"排序选项"对话框,在"方向"栏中选择"按行排序"单选按钮,如图1所示. 图1 选择"按行排序"单选按钮 2.单击"确定"按钮关闭"排序选项"对话框,再在"排序"

Word文档的表格中数据排序的方法

  Word文档的表格中数据排序的方法         1.在表格中单击将插入点光标放置到任意单元格中,然后在"表格工具-布局"选项卡中单击"数据"组中的"排序"按钮,如图1所示. 图1 单击"排序"按钮 2.打开"排序"对话框,在"主要关键字"下拉列表中选择排序的主要关键字,在"类型"下拉列表框中选择排序标准,然后单击其后的"降序"单选按钮选择以

wps表格怎样对数据排序

  wps表格对数据排序的方法: 打开点击新建按钮,新建一个表格文件 创建完成后开始录入数据 录入完成后点击第一竖排的A,选中要排序的第一竖排数据 然后在工具栏找到并选中数据编辑工具栏 点击数据栏下的升序按钮,数字按从小到大向下自动排列 降序则是从大到小依次向下自动排列

用Excel做数据排序地常用办法与灵活技术

在用Excel制作相关的数据表格时,我们可以利用其强大的排序功能,浏览.查询.统计相关的数字.下面,我们以图1所示的"员工基本情况登记表"为例,来全面体验一番Excel的排序功能. 列表能否灵活排序"> 一.快速排序 如果我们希望对员工资料按某列属性(如"工龄"由长到短)进行排列,可以这样操作:选中"工龄"列任意一个单元格(如I3),然后按一下"常用"工具栏上的"降序排序"按钮即可(参见图1