zoukankan      html  css  js  c++  java
  • 05 RDD编程

    一、词频统计

    1.读文本文件生成RDD lines

     

    2.将一行一行的文本分割成单词 words flatmap()

     

    3.全部转换为小写 lower()

     

    4.去掉长度小于3的单词 filter()

     

    5.去掉停用词

     

    6.转换成键值对 map()

    7.统计词频 reduceByKey()

     

    8.按字母顺序排序 sortBy(f)

     

    9.按词频排序 sortByKey()

     

     10.结果文件保存 saveAsTextFile(out_url)

     

     11.词频结果可视化charts.WordCloud()   (调用render()没有反应)

     12.比较不同框架下(Python、MapReduce、Hive和Spark),实现词频统计思想与技术上的不同,各有什么优缺点.

     Python实现词频统计通过代码,就是自定义循环列表读取文件。

    MapReduce通过提交任务的方法来完成。

    Hive通过自己的HQL语言实现

    Spark可以使用多种语言实现

    综上,Map和Reduce两种操作,编写好的代码要打包运行,不能通过shell进行交互式处理,如果程序改动需要重新打成jar包。Hive的HQL表达能力有限迭代式算法无法表达,调优比较困难,可控性差。而Spark更快,容易使用,通用性高。

    二、学生课程案例分析

    1.总共有多少学生?map(), distinct(), count()

     

    2.开设了多少门课程?

     

    3.每个学生选修了多少门课?map(), countByKey()

     

    4.每门课程有多少个学生选?map(), countByValue()

     

    5.Henry选修了几门课?每门课多少分?filter(), map() RDD

     

    6.Henry选修了几门课?每门课多少分?map(),lookup()  list

     

    7.Henry的成绩按分数大小排序。filter(), map(), sortBy()

     

    8.Henry的平均分。map(),lookup(),mean()

     

    9.生成(课程,分数)RDD,观察keys(),values()

    10.每个分数+5分。mapValues(func)

    11.求每门课的选修人数及所有人的总分。combineByKey()

    12.求每门课的选修人数及平均分,精确到2位小数。map(),round()

    13.求每门课的选修人数及平均分。用reduceByKey()实现,并比较与combineByKey()的异同。

     14.结果可视化。charts,Bar()   course.keys()对上course.keys()是可以运行的,course.keys()对上course.values()或者course.map(lambda x:x[x]).collect()就会出现断言错误,*len(x_axis)=len(y_axis)*

  • 相关阅读:
    hdu 5253 最小生成树
    hdu5248 序列变换
    bjfu1299 stl使用
    bjfu1277 简单递归
    bjfu1262 优先队列
    bjfu1287字符串输出的大水题
    bjfu1281
    bjfu1253 最大上升子序列和
    [转][Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
    Unity3d 中 将远程 MySQL 数据库转换为本地 Sqlite
  • 原文地址:https://www.cnblogs.com/Margerita/p/14668155.html
Copyright © 2011-2022 走看看