Join实现-MRJob-Python数据分析(16)

1.1. 前言

前面我们解析出了CDN IP 和 用户真实IP 的访问次数,但是我们要如何知道该IP是来自哪个地区呢?这时候我们就需要用到在area_ip.csv 中的数据了。

这时候就需要使用 M/R 来实现 IP 和 area_ip 的 join 行为。使用 M/R 来实现join其实就是 笛卡尔积 之后的过滤。如果数据量大的话将会是一个十分耗时的过程。而且我们 area_ip.csv 的数据是一个IP范围的数据,我们还需要将它展开,如:

start_ip: 0.0.0.0 stop_ip: 0.0.0.3

转化为四条数据

初步一算 原来 30M 多的 area_ip 数据就会变成 30G 多有好几十亿的数据这个用 M/R 做起join起来那可想而知了。

为了演示 M/R 的join 我们这边使用一个比较简单的数据来展示一下

1.2. 需求

求好友间接关系

1.3. 数据

1.4. Mapper 步骤

键值互换变成两表关联

1.5. Shuffle 步骤

拆分成两半并打上标记

1.6. 获取key相同的集合

1.7. Reduce 步骤

取出每个key的值进行笛卡尔集从而得出有间接好友关系

原本要去重的这边就不去了

1.8. 程序代码

1.9. 准备数据

1.10. 执行程序

昵称: HH

QQ: 275258836

ttlsa群交流沟通(QQ群②: 6690706 QQ群③: 168085569 QQ群④: 415230207(新) 微信公众号: ttlsacom)

感觉本文内容不错,读后有收获?

逛逛衣服店,鼓励作者写出更好文章。

HH
teakki

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: