用spark统计50年美国最常见的20个名字

使用Spark统计从1950到2000年,美国有相同姓名的人出生数目,然后输出头20个最频繁出现的名字

from pyspark import SparkContext
sc = SparkContext('local', 'pyspark')
import os
cwd = os.getcwd()
cwd
'/home/ds/notebooks/CuiZhenlong/qqq'
rdd=sc.parallelize([])
for year in range(1950,2001):
    rdd_tmp=sc.textFile('file://'+cwd+'/../names/yob'+str(year)+'.txt')
    rdd=rdd.union(rdd_tmp)
rdd.cache()
print rdd.count()
rdd.take(10)

共90万条记录

900380





[u'Linda,F,80431',
 u'Mary,F,65460',
 u'Patricia,F,47945',
 u'Barbara,F,41558',
 u'Susan,F,38022',
 u'Nancy,F,29621',
 u'Deborah,F,29071',
 u'Sandra,F,28893',
 u'Carol,F,26159',
 u'Kathleen,F,25699']
rdd=rdd.map(lambda x:(x.split(',')[0],int(x.split(',')[2]))) \
        .reduceByKey(lambda x,y:x+y) \
        .sortBy(lambda (name,count):count,ascending=False)

rdd.cache()
#rdd=rdd.map(lambda x :(x.split(',')[0],1)).reduceByKey(lambda x,y:x+y).sortByKey()
rdd.take(50)
[(u'Michael', 3554246),
 (u'David', 2616412),
 (u'James', 2604117),
 (u'John', 2504730),
 (u'Robert', 2429312),
 (u'William', 1789899),
 (u'Christopher', 1739768),
 (u'Joseph', 1416815),
 (u'Jennifer', 1392133),
 (u'Daniel', 1376737),
 (u'Richard', 1373228),
 (u'Thomas', 1309885),
 (u'Mary', 1288907),
 (u'Matthew', 1263860),
 (u'Mark', 1232699),
 (u'Steven', 1122420),
 (u'Brian', 1059917),
 (u'Kevin', 1014177),
 (u'Charles', 1010472),
 (u'Anthony', 968043),
 (u'Lisa', 955357),
 (u'Jessica', 953317),
 (u'Timothy', 948295),
 (u'Jeffrey', 908248),
 (u'Jason', 907598),
 (u'Joshua', 905464),
 (u'Andrew', 876333),
 (u'Linda', 874299),
 (u'Elizabeth', 866998),
 (u'Susan', 857636),
 (u'Patricia', 845134),
 (u'Paul', 802352),
 (u'Karen', 777396),
 (u'Kimberly', 770735),
 (u'Eric', 769778),
 (u'Kenneth', 756673),
 (u'Michelle', 753312),
 (u'Scott', 735601),
 (u'Sarah', 719367),
 (u'Amanda', 717924),
 (u'Melissa', 709613),
 (u'Ashley', 708573),
 (u'Ryan', 706225),
 (u'Deborah', 686251),
 (u'Stephanie', 666303),
 (u'Stephen', 662599),
 (u'Nicholas', 635905),
 (u'Gregory', 632826),
 (u'Jonathan', 628531),
 (u'Gary', 626982)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值