背景需求:
有两张表,暂且定义为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表的末尾,没有什么经验,求大神指点!!!!!!!!!!
如果大神有其他更好地思路,也请赐教。
谢谢
|