Hadoop第五讲

Hadoop 的API开发步骤

需要将hadoop/contrib/hadoop-0.20.2-eclipse-plugin.jar添加到eplipse的安装目录的plugin目录中,然后重启eclipse即可。在重启eclipse之后需要在preference->Hadoop Map/Reduce选项中设置Hadoop的安装目录即可。

                               

然后可以在View中选择Map/Reduce Locations视图,然后在视图中右键配置Hadoop的位置

                             

host和port与 mapred-site.xml和core-site.xml文件中的配置一致

                             

配置完成之后会显示有DFS Locations,单击选择disconnect然后connect或刷新就能显示HDFS系统中的目录树。

                           

安装插件之后,可以在New Project页面建立M/R Project,便能自带编程所需API

例子1:数据筛选程序

任务要求:现有一批路由日志,需要提取MAC地址和时间,删去其他内容。

                          

算法思路如下:

                        

首先创建MapReduce Project,然后创建一个类Test1 继承Configured 实现Tool接口

                        

                       

定义Map函数

map的三个参数中前两个必须和继承类Mapper的前两个参数类型一致,表示输入数据的格式类型。这里行号存放在key中,行内容存放在value中。context是Hadoop的

上下文。

                         

                                             

这里需要对错误进行处理,若不捕获错误整个程序即使快运行完毕也会崩溃得不到正确的结果。

Run方法:

Run方法是运行程序的一种实现,在Run方法可以设定一些基本数据,从而让系统了解该如何运行整个任务,

                   

Main函数

只需在Main函数调用Run方法,系统就会启动一个MapReduce任务。

                  

运行程序,点击run configur配置运行时参数:在运行之前需要将数据上传到DFS中,输出目录必须是不存在的,需要先删除已存在的目录再运行。

                             


例子2:倒排序

任务要求
– 现有一批电话通信清单,记录了用户A拨打用户B的记录
– 需要做一个倒排索引,记录拨打给用户B的所有用户A

数据格式如下:

                          

任务输出必须如下所示,主叫以‘ |’分割

                       

算法思路:

                            

Map函数的主要作用是把两个号码分割,然后被叫作为Key,主叫作为Value

                  

Reduce函数:

                 

Run方法:

                

带Reduce的任务:

1. 示例程序1不带Reduce任务,系统自动把Map函数的输出发送到输出文件,Map函数
的输出格式必须与程序输出格式一致
2. 示例程序2带有Reduce任务,系统首先把Mapper的输出中Key相同的部分都发送到同
一个Reducer,然后再把Reduce函数的结果输出,Map函数的输出格式必须和
Reduce函数的输入格式一致

程序导出:

对project点击右键-->Export

               

             

            

运行程序:

           


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值