zoukankan      html  css  js  c++  java
  • RDD 编程初级实践

    一、实验目的
    (1)熟悉 Spark 的 RDD 基本操作及键值对操作;
    (2)熟悉使用 RDD 编程解决实际具体问题的方法。 
    二、实验平台
      操作系统:Ubuntu16.04
      Spark 版本:2.1.0
    三、实验内容和要求
    1.spark-shell 交互式编程
    请到本教程官网的“下载专区”的“数据集”中下载 chapter5-data1.txt,该数据集包含
    了某大学计算机系的成绩,数据格式如下所示:
    Tom,DataBase,80
    Tom,Algorithm,50
    Tom,DataStructure,60
    Jim,DataBase,90
    Jim,Algorithm,60
    Jim,DataStructure,80
    ……
     
     
    请根据给定的实验数据,在 spark-shell 中通过编程来计算以下内容: 

    进入spark/bin目录下输入spark-shell启动spark

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

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

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

    val lines = sc.textFile("file:///usr/local/sparkdata/Data01.txt")
    lines.filter(row=>row.split(",")(0)=="Tom")
    .map(row=>(row.split(",")(0),row.split(",")(2).toInt))
    .mapValues(x=>(x,1)).
    reduceByKey((x,y) => (x._1+y._1,x._2 + y._2))
    .mapValues(x => (x._1 / x._2))
    .collect()

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

    val lines =sc.textFile("file:///home/hadoop/桌面/data.txt")

    line.map(row=>(row.split(",")(0),row.split(",")(1))).

    mapValues(x=>(1)).

    reduceByKey((x,y)=>(x+y)).

    collect()

     

     (5)该系 DataBase 课程共有多少人选修;

     val lines =sc.textFile("file:///home/hadoop/桌面/data.txt")

    line.filter(row=>row.split(",")(1)=="DataBase").

    count()

     

    (6)各门课程的平均分是多少;

     val lines =sc.textFile("file:///home/hadoop/桌面/data.txt")

    line.map(row=>(row.split(",")(1),row.split(",")(2).toInt)).

    mapValues(x=>(x,1)).

    reduceByKey((x,y)=>(x._1+y._1,x._2+y._2)).

    mapValues(x=>(x._1/x._2)).

    collect()

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

    val lines =sc.textFile("file:///home/hadoop/桌面/data.txt")
    val pare = lines.filter(row=>row.split(",")(1)=="DataBase").
    map(row=>(row.split(",")(1),1))
    val accum =sc.accumulator(0)
    pare.values.foreach(x => accum.add(x))
    accum.value

  • 相关阅读:
    vue中使用第三方UI库的移动端rem适配方案
    前端规范--eslint standard
    从上往下打印二叉树
    栈的压入,弹出序列
    随机森林
    LR
    顺时针打印矩阵
    包含min函数的栈
    树的子结构
    合并两个有序链表
  • 原文地址:https://www.cnblogs.com/xjmm/p/14356676.html
Copyright © 2011-2022 走看看