明星搜索指数统计

举报
Smy1121 发表于 2019/06/20 17:23:16 2019/06/20
【摘要】 通过项目强化掌握 Combiner 和 Partitioner 优化 Hadoop 性能

上一篇我们通过项目演练了 Hadoop 性能的优化,本篇我们继续通过项目强化掌握 Combiner 和 Partitioner 优化 Hadoop 性能。


项目介绍

本项目我们使用明星搜索指数数据,分别统计出搜索指数最高的男明星和女明星。


数据集

明星搜索指数数据集,如下图所示:

image.png


思路分析

基于项目的需求,我们通过以下几步完成:


1、编写 Mapper类,按需求将数据集解析为 key=gender,value=name+hotIndex,然后输出。

2、编写 Combiner 类,合并 Mapper 输出结果,然后输出给 Reducer。

3、编写 Partitioner 类,按性别,将结果指定给不同的 Reduce 执行。

4、编写 Reducer 类,分别统计出男、女明星的最高搜索指数。

5、编写 run 方法执行 MapReduce 任务。


MapReduce Java 项目

设计的MapReduce如下所示:

Map = {key = gender, value = name+hotIndex}

Reduce = {key = name, value = gender+hotIndex}


Map

每次调用map(LongWritable key, Text value, Context context)解析一行数据。每行数据存储在value参数值中。然后根据'\t'分隔符,解析出明星姓名,性别和搜索指数。


image.png


map()函数期望的输出结果Map = {key = gender, value = name+hotIndex}


Combiner

        对 map 端的输出结果,先进行一次合并,减少数据的网络输出。


image.png


Partitioner

        根据明星性别对数据进行分区,将 Mapper 的输出结果均匀分布在 reduce 上。

image.png


Reduce

         调用reduce(key, Iterable< Text> values, context)方法来处理每个key和values的集合。我们在values集合中,计算出明星的最大搜索指数。

image.png


reduce()函数期望的输出结果Reduce = {key = name, value = gender+max(hotIndex)}

Run 驱动方法

        在 run 方法中,设置任务执行各种信息。


image.png

编译和执行 MapReduce作业

1、myclipse将项目编译和打包为star.jar,使用SSH将 star.jar上传至hadoop的/home/hadoop/djt目录下。

2、使用cd /home/hadoop/djt 切换到当前目录,通过命令行执行Hadoop作业


hadoop jar star.jar com.xxx.hadoop.middle.Star

运行结果

        你可以在DFS Locations界面下查看输出目录。


image.png

至此,项目已完毕。




【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。