我有一个关于足球运动员的不同特征的数据集(姓名、年龄、速度、团队等等)。
现在我想知道前十名最年轻的球员。
我已经收集了所有的球员的名字和年龄与map()功能,但我只想打印前10个结果。
这是我的实际代码:
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local").setAppName("CustomerExpenditure")
sc = SparkContext(conf = conf)
def age(line):
fields = line.split(",")
return(str(fields[0]), str(fields[14]))
file = sc.textFile("file:///Users/carlos/PycharmProjects/NONSQL/Project/FullData.csv")
oldestsPlayers = file.map(age)
topOldestPlayers = oldestsPlayers.map(lambda x: (x[1], x[0])).sortByKey()
results=topOldestPlayers.collect()
for result in results:
print(result)这是输出:
('33', 'Nathan Rutjes')
('33', 'Jeppe Curth')
('33', 'Ognjen Vukojević')
('33', 'Marco Padalino')
('33', 'Brian Murphy')
('33', 'Adrián Cortés')
('33', 'Yaír Urbina')
('33', 'Kim Chi Gon')
('33', 'Jacques Faty')
('33', 'Sander Asevedo')
('33', 'Alan Besseiro')
('33', 'Sandro Couteiro')
('33', 'Murilo Sancha')
('33', 'Mateus Couteira')
('33', 'Peixotacinho')
('33', 'Danisco Fachini')
('33', 'Fabiem Jardim')
('33', 'Carlos Travisso')
('33', 'Maksymilian Rogalski')
('33', 'César Valoyes')
('33', 'Dougie Imrie')
('33', 'Darren Jones')
('33', 'Iacopo La Rocca')
('33', 'Dioh Williams')
('33', 'David Fox')
('33', 'Michael Tonge')
('33', 'Paul Green')发布于 2019-12-05 10:01:46
当你使用一个收集,你带回所有的数据,然后你过滤。这意味着,有了大量的数据,你的记忆就会崩溃。
results = topOldestPlayers.take(10)这种方法只会带来前10名,而不是所有的东西。如果你只想打印,
for r in results: print(*r, sep=': ')https://stackoverflow.com/questions/59191059
复制相似问题