• 假期学习【四】RDD编程实验一


    1.今天把Spark编程第三个实验的Scala独立程序编程写完了。使用 sbt 打包 Scala 程序,然后提交到Spark运行。

    2.完成了实验四的第一项

    (1)该系总共有多少学生;
     

    map(t => t.split(",")(0))表示:lines这个RDD中每个元素被split()函数拆分成3个字符串,保存到数组中,然后,把数组中的第1个元素(即学生名字字段的值)取出来放到新的RDD中。

    distinct()表示:去重操作,即把重复的学生名字去掉,只保留一个。

    count()表示:求去重后的学生总人数。 

    (2)该系共开设来多少门课程;

     与第一问同理,只不过改为数组的第二个元素。

    (3)Tom 同学的总成绩平均分是多少;

    lines.filter(t => t.split(",")(0) == "Tom")表示:过滤掉数据集中第1个字段非“Tom”的名字,即只保留Tom的数据。

    map(t => (t.split(",")(0), t.split(",")(2).toInt)) 表示:lines这个RDD中每个元素被split()函数拆分成3个字符串,保存到数组中,然后,把数组中的第1个元素和第3个元素取出来放到新的RDD中,.toInt的作用是把String类型的成绩值转变成Int类型,可以进行运算。

    mapValues(x => (x,1))表示:构建(key, value)类型的键值对,其中,key表示Int类型的成绩,value表示数字"1"。

    reduceByKey((x,y) => (x._1+y._1, x._2+y._2))表示:x._1+y._1表示把key(成绩)相加,x._2+y._2表示把value(数字“1”)相加。

    mapValues(x => x._1/x._2)表示:总成绩/科目总数

    values表示:返回value值(即平均成绩)。

    (4)求每名同学的选修的课程门数;

    数据大概如下,仅展示部分结果如图:

     

    (5)该系 DataBase 课程共有多少人选修;
    (6)各门课程的平均分是多少;

     

    (7)使用累加器计算共有多少人选了 DataBase 这门课。 

     

  • 相关阅读:
    机器学习之logistic回归算法与代码实现原理
    机器学习之朴素贝叶斯算法原理与代码实现
    机器学习之KNN原理与代码实现
    Linux服务器LVM详细操作
    搭建nginx做文件下载服务器
    Django 知识点补充
    Nginx 代理TCP/UDP 端口
    Nginx 日志打印POST数据
    Linux 服务器基本优化
    Django FBV CBV以及使用django提供的API接口
  • 原文地址:https://www.cnblogs.com/zlc364624/p/12253901.html
Copyright © 2020-2023  润新知