06 RDD编程
二、学生课程分数案例
- 总共有多少学生?map(), distinct(), count()
-
- 开设了多少门课程?
-
- 每个学生选修了多少门课?map(), countByKey()
-
- 每门课程有多少个学生选?map(), countByValue()
-
- Tom选修了几门课?每门课多少分?filter(), map() RDD
-
- Tom选修了几门课?每门课多少分?map(),lookup() list
-
- Tom的成绩按分数大小排序。filter(), map(), sortBy()
-
- Tom的平均分。map(),lookup(),mean()
- 求每门课的选修人数及平均分。combineByKey()
- 求每门课的选修人数及平均分,精确到2位小数。map(),round()
- 求每门课的选修人数及平均分。用reduceByKey()实现,并比较与combineByKey()的异同。
- 结果可视化。 pyecharts.charts,Bar()
-
text1=sc.textFile('file:///home/hadoop/chapter4-data01.txt')
text2=text1.map(lambda x:x.split(',')).map(lambda x:(x[1],x[2]))
text3=text2.combineByKey(lambda v:(int(v),1),lambda c,v:(c[0]+int(v),c[1]+1),lambda c1,c2:(c1[0]+c2[0],c1[1]+c2[1]))
text4=text3.map(lambda x:(x[0],(x[1][0]/x[1][1],x[1][1])))
text4.take(5)
from pyecharts.charts import bar
from pyecharts.echarts import option as opts
text4=text3.map(lambda x:(x[0],x[1][0]/x[1][1],x[1][1]))
cs=text4
cs.take(5)
bar=bar.Bar()
colors=['#7c9eea']
bar.add('avg',cs.keys().collect(),cs.map(lambda x:x[1]).collect(),label_color=colors)
bar.render('bar.html') - 结果文件保存 saveAsTextFile(out_url)
- 词频结果可视化 pyecharts.charts.WordCloud()
- 比较不同框架下(Python、MapReduce、Hive和Spark),实现词频统计思想与技术上的不同,各有什么优缺点.
-
words6_058.saveAsTextFile('file:///home/hadoop/saverdd')
list_1=words6_058.collect()
from pyecharts.charts import wordcloud
mywordcloud = wordcloud.WordCloud()
list_key=[]
list_vlues=[]
for i in list_1:
list_key.append(i[0])
list_vlues.append(i[1])print(list_key)
print(list_vlues)
mywordcloud.add('ciyun',list_key,list_vlues, shape='triangle')
mywordcloud.render()