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')

      1. 结果文件保存 saveAsTextFile(out_url)
      2. 词频结果可视化 pyecharts.charts.WordCloud()
      3. 比较不同框架下(Python、MapReduce、Hive和Spark),实现词频统计思想与技术上的不同,各有什么优缺点.
      4. 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()

posted @ 2021-04-12 20:57  无可奈何花落  阅读(87)  评论(0编辑  收藏  举报