分享

MR程序求指点

tonydu 发表于 2016-12-29 00:04:24 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 7 8508
背景需求:

有两张表,暂且定义为t1和t2

t1中有一个字段 client_ip(我们暂且只关注这一个),string类型, 形式为192.168.1.100
t2中有三个字段  start_ip,end_ip,city_id,其中start_ip和end_ip都是long类型,形式为40010,40020
注:start_ip和end_ip是client_ip通过一个算法得到的。


现在要用MR写一段程序,把t1表中的client_ip截取出来,然后与t2表中的start_ip,end_ip作比较,看其落在哪个区间内,然后返回对应区间的city_id,并且增加到t1表的末尾


例如:
t2
start_ip end_ip city_id
40011 40020 010
40021 40030 020

t1表中有个client_ip=192.168.1.100,经过算法计算,等于40023,那么其落在40021-40030这个区间,则返回020,并增加到t1表末尾。






本人的思路:
首先明确不需要使用reduce过程
第一个map程序,截取t1表中的client_ip,并进行算法转换,得到和start_ip,end_ip相同类型的数据
第二个map程序,截取t2表中的start_ip,end_ip,city_id三个字段


然后怎么进行比较,怎么返回city_id和怎么添加到t1表的末尾,没有什么经验,求大神指点!!!!!!!!!!


如果大神有其他更好地思路,也请赐教。


谢谢










已有(7)人评论

跳转到指定楼层
langke93 发表于 2016-12-29 10:20:49
本帖最后由 langke93 于 2016-12-29 10:24 编辑

个人认为,这样不妥,可能还没有理解mapreduce的精髓。

对于t1表,可以使用map分割。
对于第二个表可以使用hadoop的分布式缓存。

这样map起到分割的作用,对于楼主说的两个map,其实可以放到一个reduce里面去实现。
回复

使用道具 举报

tonydu 发表于 2016-12-29 10:42:46
langke93 发表于 2016-12-29 10:20
个人认为,这样不妥,可能还没有理解mapreduce的精髓。

对于t1表,可以使用map分割。

简单粗暴点,告诉我你怎么处理这个业务???
回复

使用道具 举报

langke93 发表于 2016-12-29 10:50:37
调整思路即可,业务逻辑其实就是楼主说的两个map,只不过个人认为最好放到reduce
回复

使用道具 举报

tonydu 发表于 2016-12-29 11:08:59
langke93 发表于 2016-12-29 10:50
调整思路即可,业务逻辑其实就是楼主说的两个map,只不过个人认为最好放到reduce

大神,帮人帮到底,你能稍微具体点指点下吗????
回复

使用道具 举报

langke93 发表于 2016-12-29 14:09:02
tonydu 发表于 2016-12-29 11:08
大神,帮人帮到底,你能稍微具体点指点下吗????

你需要说明到底哪里不明白,才能解决你的问题。

关于hbase mapreduce推荐参考
HBase MapReduce实例分析
http://www.aboutyun.com/forum.php?mod=viewthread&tid=8519

hbase MapReduce程序样例介绍及入门

http://www.aboutyun.com/forum.php?mod=viewthread&tid=8671


回复

使用道具 举报

langke93 发表于 2016-12-29 14:16:08
这里使用伪代码

map(参数)
{
这个函数实现读取表t1,并且确定分割符,其实跟普通的mapreduce差不多的

}

reduce(values
{
使用分布式缓存,提高效率
这里面是一系列的表1中分割的数据values
for(value v:values)//v是表中具体ip的值
{
这里通过sql或则遍历表2,查询表2中是否有v值,属于哪个ip段
}

}
回复

使用道具 举报

liuzhixin137 发表于 2016-12-30 16:16:01
create table t3 select t1.client_ip, t2.city_id from t1, t2 where t1.client_ip > t2.start_ip and t1.clinet_ip < t2.end_ip;

hive不能做吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条