使用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)]