RDD编程初级实践

1.pyspark交互式编程

请到教材官网的“下载专区”的“数据集”中下载chapter4-data1.txt,该数据集包含了某大学计算机系的成绩,数据格式如下所示:

Tom,DataBase,80

Tom,Algorithm,50

Tom,DataStructure,60

Jim,DataBase,90

Jim,Algorithm,60

Jim,DataStructure,80

……

请根据给定的实验数据,在pyspark中通过编程来计算以下内容:

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

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

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

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

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

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

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

2.编写独立应用程序实现数据去重

对于两个输入文件A和B,编写Spark独立应用程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新文件C。下面是输入文件和输出文件的一个样例,供参考。

输入文件A的样例如下:

20170101    x

20170102    y

20170103    x

20170104    y

20170105    z

20170106    z

输入文件B的样例如下:

20170101    y

20170102    y

20170103    x

20170104    z

20170105    y

根据输入的文件A和B合并得到的输出文件C的样例如下:

20170101    x

20170101    y

20170102    y

20170103    x

20170104    y

20170104    z

20170105    y

20170105    z

20170106    z

3.编写独立应用程序实现求平均值问题

每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生名字,第二个是学生的成绩;编写Spark独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。下面是输入文件和输出文件的一个样例,供参考。

Algorithm成绩:

小明 92

小红 87

小新 82

小丽 90

Database成绩:

小明 95

小红 81

小新 89

小丽 85

Python成绩:

小明 82

小红 83

小新 94

小丽 91

平均成绩如下:

    (小红,83.67)

    (小新,88.33)

    (小明,89.67)

    (小丽,88.67)

 

  • 实验结果与分析
  1. pyspark交互式编程

0.先启动pyspark

7ccccb13729746cfae60f05845fff136.png

 

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

73e25fdde776455783f0e07c403e1a4c.png

 

总共265名学生

 

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

 

取出第二列课程数据,进行去重操作

3e5192958fd344969511dae3ce4961e9.png

 

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

先取出tom同学的成绩

88c092cd64684466b4a2706c2f27b874.png

再取出成绩列,统计课程数量,再对分数用reduce函数求和,最后求出平均分。

7d2ae7e8cc6b469aaaca7d2445f5b7df.png

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

取出每位同学的名字并且通过map函数形成键值对形式,键为名字,值为1.

再用reducebykey函数应用于键值对数据,得到聚合的结果。

 

 

 

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

直接用filter函数将数据库课程过滤出

42b22201414643319cb0294a3971aef8.png

 

 

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

为每门课程的分数后面新增一列1,表示1个学生选择了该课程。

格式如('ComputerNetwork', (44, 1))

再按课程名聚合课程总分和选课人数。格式如('ComputerNetwork', (7370, 142))

最后:课程总分/选课人数 = 平均分,并利用round(x,2)保留两位小数

48690f3d970e4454b6b1d8adbfa9d61d.png

 

2.编写独立应用程序实现数据去重

实现两个文件合并并且去重:

在mycode/data目录下创建两个txt文件

bea2cb32365f4416ab4eeaeb8afa4dce.png

 

在当前目录下创建py文件,填写如下内容实现两个文件的合并去重

cf575a8f1a3a44e493d9886680948396.png

 

在当前目录下运行

11f7eb44445b4e53ac43333c7706b093.png

 

结果如下:

6e3fbc31790b4734b10ca1b042368112.png

 

 

3.编写独立应用程序实现求平均值问题

多个文件合并实现求平均值:

在data目录下创建三个成绩的文件

065a8c65e1e241c7a9ccb40ec61d0d3d.png

 

在data目录下创建mean.py文件,并添加如下代码:

c77972ca4e0142f7a10767e47a1c8066.png

 

 

运行

6ae8867f55014c498344ded89bc510ed.png

 

成功

81128aa9da0d4a88a84af324bb41ea78.png

 

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值