pyspark 实验二,rdd编程

news2024/10/6 10:27:54

1.环境准备

start-all.sh

 启动Hadoop

./bin start-all.sh

启动spark

上传数据集

 1.求该系总共多少学生

lines=sc.textFile("file:///home/data.txt")
res= lines.map(lambda x:x.split(",")).map(lambda x:x[0])
sum=res.distinct()
sum.cont()

 2.求该系设置了多少课程

lines=sc.textFile("file:///home/data.txt")
res= lines.map(lambda x:x.split(",")).map(lambda x:x[1])
class_res=res.distinct()
class_res.count()

结果为8

3.求tom的平均成绩

前两step代码近似

lines=.......
res= lines.filter(lambda x:x.split(",")).map(lambda x:x[0]=="Tom")
res.foreach(print)

先打印一下tom同学的成绩

 

然后统计tom的总成绩和总科目并相除

 score=res.map(lambda x:int(x[2]))
 all=res.count()
 sum=score.reduce(lambda x,y:x+y)
 ave=sum/all
 print(ave)

 

 结果为30.8

4.求每名同学的选课情况,也就是经典的map reduce 相加逻辑同上

res= lines.map(lambda x:x.split(",")).map(lambda x:(x[0],1))
pick_res=res.reduceByKey(lambda x,y:x+y)
pick_res.foreach(print)

 由于太多只得部分截取

5.求选了Database的人数

res= lines.map(lambda x:x.split(",")).filter(lambda x:x[1]=='DataBase')
res.count()

 得到答案为126

6.求出各科平均分

 res= lines.map(lambda x:x.split(",")).map(lambda x:(x[1],(int(x[2]),1)))
 temp=res.reduceByKey(lambda x,y:(x[0]+y[0],x[1]+y[1]))
 ave=temp.map(lambda x:(x[0],round(x[1][0]/x[1][1],2)))
ave.foreach(print)

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

 得出结果126

二·生成两个txt的随机数并合并

1.先创建两个txt文件

 2.新建py文件


import random
import string
dic_name_score = {}

s=['x','y','z']
for i in range(300):
    student_num = random.randint(20170100,20170199)
    student_score = random.choice(s)
    dic_name_score[student_num] = student_score

dic_name_score_sort = sorted(dic_name_score.items(), key=lambda x: x[1])

for i in dic_name_score_sort:
    print(i[0]," ",i[1])
f=open("/home.txt","w")
for line in dic_name_score_sort:
    f.write(line+'\n',)

 ps:若生成不了那请自行在windows上执行完复制粘贴,然后上传到linux端。

需要安装pyspark第三方库

 

执行命令合并

结果如下

 随机生成人名和课程并求出平均数

1.随机生成人名和成绩的代码如下,设置了五门课程


import random
import string
dic_name_score = {}

first_name  = ["赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "褚", "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许", "何", "吕", "施", "张", "孔", "曹", "严", "华", "金", "魏", "陶", "姜", "戚", "谢", "邹", "喻", "柏", "水", "窦", "章", "云", "苏", "潘", "葛", "奚", "范", "彭", "郎", "鲁", "韦", "昌", "马", "苗", "凤", "花", "方"]
second_name = ["静", "霞", "雪", "思", "平", "东", "志宏", "峰", "磊", "雷", "文","明浩", "光", "超", "军", "达", "伟", "华", "建国", "洋", "刚", "万里", "爱民", "牧", "陆", "路", "昕", "鑫", "兵", "硕"]

for i in range(100):
    student_num = random.randint(10,100)
    student_score = random.choice(first_name) + random.choice(second_name)
    s2=random.randint(10,100)
    s3=random.randint(10,100)
    s4=random.randint(10,100)
    s5=random.randint(5,100)
    dic_name_score[student_num,s2,s3,s4,s5] = [student_score]

dic_name_score_sort = sorted(dic_name_score.items(), key=lambda x: x[1])

for i in dic_name_score_sort:
    print(i[1]," ",i[0])
f=open("D:\\A.txt","w")
for line in dic_name_score_sort:
    f.write(line+'\n',)

执行代码得到了一个人对应了五个科目的成绩,随后进行分割把没科目成绩分到不同的文件中去。

我们将答案放在了c.txt 由于过多我们用tail查看

 编写代码求出平均值

from pyspark import SparkContext
sc=SparkContext('local','sparksql')
lines1=sc.textFile('file:///home/A.txt')
lines2=sc.textFile('file:///home/B.txt')
lines=lines1.union(lines2)
data=lines.map(lambda x:x.split(" ").map(lambda x:(x[0],int(x[1]),1)))
res=data.reduceByKey(lambda x,y:(x[0]+y[0],x[1]+y[1]))
result=res.map(lambda x:(x[0],round(x[1][0]/x[1][1],2)))
result.repartition(1).saveAsTextFile("file:///home/result")

 

 执行代码最后把结果存在result 由于过多我们用head指令看结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MybatisPlus快速入门】—— 进阶入门

进阶篇 1.1 映射专题 Mybatis 框架之所以能够简化数据库操作,是因为他内部的映射机制,通过自动映射,进行数据的封装,我们只要符合映射规则,就可以快速高效的完成SQL操作的实现既然 MybatisPlus 是基于Mybatis 的增强…

程序员如何能提高自己的编程水平?

这些实用的小建议,能帮你迅速地提高编程水平: 不要做无意义的奋斗 拒绝喊口号和无意义的奋斗,包括但不限于: ①做了计划表却从未有执行的一天; ②每天都是最早来、最晚走,但是工作进度趋近于0&#xff1b…

ASP.NET Core MVC 从入门到精通之接化发(一)

随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生&#xff0c…

PathCore:IAD文献解读

论文链接:[Towards Total Recall in Industrial Anomaly Detection]Towards Total Recall in Industrial Anomaly Detection :数据集, :标签 : 在ImageNet上预训练后的网络 第 张图 网络中第 层 1. Locall…

Sentinel学习笔记

Sentinel 官方文档: https://github.com/alibaba/Sentinel/wiki/%E4%B8%BB%E9%A1%B5 SpringCloud Alibaba: https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud_alibaba_sentinel 是什么…

丝滑的打包部署,一套带走~

以下文章来源于悟空聊架构 ,作者悟空聊架构 本文主要内容如下: 目录 一、背景 Docker打包部署方案 项目背景:新项目的后端框架是刚起步,搭建的是一套微服务框架,基础服务有网关 Gateway, Nacos 注册中心…

为什么stm32gpio引脚的翻转速度最大只有18Mhz

(1). GPIO 引脚速度:GPIO_Speed_2MHz (10MHz, 50MHz) ; 又称输出驱动电路的响应速度:(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路,通过选择速度来选择…

史上最全测试开发工具视频教程详解(含自动化、性能、接口、抓包)

目录 一、UI自动化测试工具 1. uiautomator2 2. Appium 3. ATX-Test 4. Airtest 5. ATXServer2 6. STF 7. Appetizer 二、APP稳定性测试工具 8. UICrawler 9. Maxim 10. AppCrawler 三、APP性能测试工具 11. SoloPi 12. GT 四、抓包工具 13. AnyProxy …

pytorch安装教程(二)

一直用的pytorch1.2,有点老了,想换个新版本,换成了pytorch2.0. torch安装 安装过程最重要的就是cuda、cudnn的版本和pytorch对应。 因为要在GPU上跑代码。 删除老旧torch 我用的软件是anaconda,因为可以创建虚拟环境。 步骤&…

LAZADA将缩短履约时效,卖家发货倍感压力

Lazada的跨境卖家们,恐怕又要头疼了。 近日, Lazada官方宣布,为了提升消费者体验,平台将调整商家履约订单时效。从2023年5月4日起生成的订单履约时效将有所更新。 具体而言,内地、香港和Laz Go Global的履约节点为“点…

Qt Quick - MessageDialog 消息提示框

MessageDialog 使用总结一、概述二、使用1. 例子一2. 例子二三、常用属性一、概述 MessageDialog 最基本的用例是弹出警告框。它还允许用户根据启用的按钮以各种方式进行响应。对话框最初是不可见的。你需要首先按需设置属性,然后将visible设置为true或调用open()。…

FIFO设计笔记(双口RAM、同步FIFO、异步FIFO)Verilog及仿真

文章目录0、前言0.1、FIFO0.2、FIFO与RAM1、异步双口RAM1.1、原理1.2、Verilog代码1.3、tb仿真2、FIFO设计前瞻知识2.1、格雷码2.1.1、二进制转格雷码Verilog代码tb仿真2.1.2、格雷码转二进制Verilog代码tb仿真2.2、独热码3、同步FIFO3.1、同步FIFO设计原理3.1.1、设计原理3.1.…

SpringBoot中操作Redis通过所有可能的key查询存在的key并解析为对象实体的通用方法

场景 SpringBoot中操作Redis的特殊操作-批量查询(通过key的集合批量查杜绝模糊搜索)、查询并解析对象list: SpringBoot中操作Redis的特殊操作-批量查询(通过key的集合批量查杜绝模糊搜索)、查询并解析对象list_霸道流氓气质的博客-CSDN博客 在上面讲操作redis中特…

【未来已来】人人都说GPT,人人都怕GPT,人人都用GPT

文章目录前言一、GPT是什么?二、当GPT和AI遇到摄影总结前言 ChatGPT是由美国OpenAI研发的能够通过自然语言驱动的人工智能技术工具,因为它强大的执行力和任务处理能力,一经亮相就引起了极大的关注。与之类似,在图像智能生成方面&…

Java 自学 - 接口与继承 接口

设计 Java 的接口 在设计 LOL 的时候,进攻类英雄有两种,一种是进行物理系攻击,一种是进行魔法系攻击 这时候,就可以使用接口来实现这个效果。 接口就像是一种约定,我们约定某些英雄是物理系英雄,那么他们…

交接机的基本原理

第七章:交接机的基本原理 在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网上的传输标准,了解以太网协议是充分理解数据链路层通信的基础。以太网交换机是实现数据链路层通信的主要设备,了解以太网交换机的工作…

抽象轻松web

不管是求最大值,还是最小值,无论是整数还是小数,数据类型是不是一样的 它们的本质上都是判断,在判断的基础上不断的变换,增加判断条件,增加判断过程罢了 判断需要两个本质 1 :两个以上的元素…

Redis高可用高性能缓存的应用系列2 - 事务机制和IO多路复用、持久化

概述 Redis高可用高性能缓存的应用系列的第二篇,主要介绍Redis事务机制和IO多路复用、和持久化的知识点。 Redis事务机制 Redis事务机制,和Mysql有大的不同,分为4步进行执行: 1.事务提交前,先检查命令语法是否正确…

【2023版】基于部标JT808JT1078车载视频位置监控平台介绍-开源项目

演示地址:http://gps.lingx.com 账号:admin 密码:123456 部标/苏标设备入口 IP:47.100.112.218 ; 端口:8808 1.项目背景 “GPS/GPRS车辆智能管理系统”具备车辆实时定位监控、远程监控调度、行驶路线偏移…

ChatGPT帮我和老板吵架,半分钟做了个思维导图...

大家好,我是小z,也可以叫我阿粥最近那个疑似成都电科的截图已经传疯了,贴一张图回味下:这种壮士断腕式的吵法,可以说几乎是单方面的虐杀。但是有朋友问了,在职场中还是有所顾忌,有没有更体面点的…