最新消息:请随时分享你的乐趣!

spark 学习-2014 根据微博数据计算最热微博

技术博客 磊子 939浏览 0评论

spark-logo-hd

首先我有1G+的微博关注数据是json格式。

我想知道这些人关注谁的微博最火。

首先微博数据结构为:

数据:http://yunpan.cn/cZ84JRFAMZWjw 访问密码 e662

数据结构:id 为当事人,ids 是当事人关注的人员名单

{"id":1220774500,"ids":[1820770792,1756976115,2710695530"]}
{"id":1220774500,"ids":[1820770792,1756976115,2710695530"]}
{"id":1220774500,"ids":[1820770792,1756976115,2710695530"]}
{"id":1220774500,"ids":[1820770792,1756976115,2710695530"]}

查询计算热门微博spark算法:

 

 

未格式化(一行):
rdd.flatMap(x=> if(x!=null && x.indexOf("[")!= -1 &&x.indexOf("]")!=  -1)  x.substring(x.indexOf("[")+1,x.indexOf("]")).split(",") else Array("")).map((_,1)).reduceByKey(_+_).map( x => (x._2,x._1)).sortByKey(false).saveAsTextFile("/opt/spark/rs/rsbig7")

 

格式化的:

var rdd=sc.textFile("weibo.json")
rdd
.flatMap(x=> if(x!=null && x.indexOf("[")!= -1 &&x.indexOf("]")!=  -1)  x.substring(x.indexOf("[")+1,x.indexOf("]")).split(",") else Array(""))
.map((_,1))
.reduceByKey(_+_)
.map( x => (x._2,x._1))
.sortByKey(false)
.saveAsTextFile("/opt/spark/rs/rsbig7")

 

运行spark的得出如下文件:

part-00000
part-00001
part-00002

内容如下:

(103691,1642909335)
(94469,2016713117)
(79798,1266321801)
(61699,1087770692)
(61449,1195230310)
(61206,1223762662)
(60516,1656809190)
(59095,1197161814)
(56296,1854283601)
(56180,1192329374)
(55311,1781379945)
(53827,1934183965)
(52760,1793285524)

上面是经过排序的文件,使用爬虫对part-00000.txt进行爬去,

使用python爬虫抓取ID对应的人,如下:

数字ID        微博短号   whos

1642909335 sinat 微博小秘书的微博_微博
2016713117 weibokefu 微博客服的微博_微博
1266321801 yaochen 姚晨的微博_微博
1087770692 chenkun 陈坤的微博_微博
1195230310 hejiong 何炅的微博_微博
1223762662 linxinru 林心如的微博_微博
1656809190 zhaowei 赵薇的微博_微博
1197161814 kaifulee 李开复的微博_微博
1854283601 guodegang 郭德纲的微博_微博
1192329374 xiena 谢娜的微博_微博
1781379945 58352 微博Android客户端的微博_微博
1934183965 u/1934183965 微博管理员的微博_微博
1793285524 leehom 王力宏的微博_微博
2671109275 u/2671109275 新手指南的微博_微博
1212812142 wenzhang626 文章同學的微博_微博
1816011541 iamamycheung 张小娴的微博_微博
1704116960 dees 小S的微博_微博
1195242865 yangmiblog 杨幂的微博_微博
1730336902 dasdasdas 大S的微博_微博
1752467960 u/1752467960 范范范瑋琪的微博_微博
1282005885 caikangyong 蔡康永的微博_微博
1608574203 dreamerjimmy 夢想家林志穎的微博_微博
1682352065 zhoulibo 周立波的微博_微博
1642351362 realangelababy angelababy的微博_微博
1192515960 libingbing 李冰冰的微博_微博
1644492510 jsbcmf 非诚的非的微博_微博
1763582395 hangeng 韩庚的微博_微博
1962310741 photo 微相册的微博_微博
1883881851 nba NBA的微博_微博
1742727537 u/1742727537 蔡依林的微博_微博
1722594714 shuqi 舒淇的微博_微博
1198920804 yanglan 杨澜的微博_微博
1249193625 lejia 乐嘉的微博_微博
1188552450 guojingming 郭敬明的微博_微博
1784537661 luozhixiang 羅志祥的微博_微博
1191220232 gaoxiaosong 高晓松的微博_微博
1228486722 wangluodan 王珞丹的微博_微博
1196235387 mayili 马伊琍的微博_微博
1781387491 58351 微博iPhone客户端的微博_微博
1275017594 perry28pp 小P老师的微博_微博
1195354434 jjlin 林俊杰的微博_微博
1712539910 chenchiaoen 陈乔恩的微博_微博
1344360230 kevinchouwb Kevin凯文老师的微博_微博
1266286555 wuqilong 吴奇隆TD的微博_微博
1618051664 breakingnews 头条新闻的微博_微博
1937439635 sunyanzi 孙燕姿的微博_微博
1223178222 hu_ge 胡歌的微博_微博
1684388950 langxianpinghk 郎咸平的微博_微博
1658688240 58350 手机微博的微博_微博
1854869497 olympics 奥林匹克运动会的微博_微博
2044679991 guomingyi 鞍钢郭明义的微博_微博
1730077315 huangxiaoming 黄晓明的微博_微博
1778742953 zhangliangying 张靓颖的微博_微博
1234552257 jackiechan 成龙的微博_微博
1676082433 gaoyuanyuan 高圆圆的微博_微博
1191258123 hanhan 韩寒的微博_微博
1362607654 huangjianxiang 黄健翔的微博_微博
1681213010 reneliu2010 刘若英的微博_微博
1733838873 iamgillianchung 鍾欣潼的微博_微博
1265020392 musiq 阿信的微博_微博
1629810574 u/1629810574 veggieg的微博_微博
1182391231 panshiyi 潘石屹的微博_微博
1191044977 lixiaolu 李小璐Super璐的微博_微博
1739928273 u/1739928273 苍井空的微博_微博
3125046087 u/3125046087 刘烨的微博_微博
1563815015 u/1563815015 宋丹丹的微博_微博
1241148864 jasonzhangjie 张杰的微博_微博
2637337657 u/2637337657 陆亚萍的微博_微博
1719232542 naying 那英的微博_微博
1914100420 u/1914100420 稀土部队的微博_微博
1230663070 tangyan 唐嫣的微博_微博
1752502537 u/1752502537 潘瑋柏的微博_微博
1249159055 suqinbk 苏芩的微博_微博
1744825334 choicharlene 蔡卓妍的微博_微博
1866882821 123221edc edc陳冠希的微博_微博
2803301701 rmrb 人民日报的微博_微博
1182389073 renzhiqiang 任志强的微博_微博
1878546883 sunyangswim 孙杨的微博_微博
1774978073 fengxiaogang 冯小刚的微博_微博
1644250693 fengshaofeng 冯绍峰的微博_微博
3261134763 liuyifeiofficial 刘亦菲的微博_微博
1726644942 michelereis 李嘉欣Michele的微博_微博
2760733525 u/2760733525 全球热门搞笑汇的微博_微博
1644395354 lxhjx 冷笑话精选的微博_微博
1713926427 topgirls8 微博搞笑排行榜的微博_微博
1746274673 linatennis 李娜的微博_微博
1581391477 odhs 歐弟的微博_微博
1821257283 huangshengyi 黄圣依的微博_微博
2869463914 u/2869463914 头榜头条的微博_微博
2806852504 u/2806852504 热门快播的微博_微博
1257818405 randbibi 周笔畅的微博_微博
1731972042 jingruqingge 梁静茹的微博_微博
1351293632 heavycrop 热议话题榜的微博_微博
1193491727 wangshi 王石的微博_微博
2554007943 u/2554007943 全球娱乐大事件的微博_微博

 

附加python爬去微博代码:

import requests

weibo="http://weibo.com/"
headers=dict(Cookie="你自己的微博Cookie,你可以从浏览器登陆然后复制到这里。")

def getTitle(digital_id,real_ID):
    rs=requests.get(weibo+real_ID,headers=headers,allow_redirects=False)
    text=rs.text
    if (text.index("<title>")!=-1 and text.index("</title>")!=-1):
        title=text[text.index("<title>")+7:text.index("</title>")]
        print("%s\t%s\t%s"%(digital_id,real_ID,title))

def get_real_ID(digital_id):
    rs=requests.get(weibo+digital_id,headers=headers,allow_redirects=False)

    getTitle(digital_id,rs.headers.get("Location")[1:])

f=open("part-00000.txt")
lines= f.readlines()

for line in lines :
    id=line[line.index(",")+1:len(line)-2]
    if id is not None and id !="":
        get_real_ID(id)

 

 

 

转载请注明:印迹. » spark 学习-2014 根据微博数据计算最热微博

发表我的评论
取消评论

表情